; HISTORY
; 19/11/2005 - First Version
; 21/11/2005 - optimization of the draw routine
; 22-24/11/2005 - optimization of the main bobs loop routine
; 25/11/2005 - changed the main bobs loop (all clear before all draw)
;            - corrected the mask of the bobs
; 28/11/2005 - Corrected and optimized the clear of bob a little
; 29/11-02/12/2005 - Optimized clear and draw bob again
; begin of december 2005 optimized clear bob with the stack pile !
; mid of december 2005 optimized draw bob like clear bob
; january final optimize and packaging !!!
; 8/01/2006 - PRECALC routine added
; 9-10/01/2006 - Changed all the program addresses !!!
; 11-14/01/2006 - More optimization to the main draw loop
; 23/01/2006 - End of coding !
; todo
; ---------------------------
	org &1a00-3
nolist
	jp goooo
; ---------------------------
; CONSTANTS
; ---------------------------
MAURICE_CLEAR_BANK	equ &c4
MAURICE_CLEAR_ADDRESS	equ &4000
MAURICE_DRAW_BANK	equ &c5
MAURICE_DRAW_ADDRESS	equ &4000
MAURICE_TEXT_BANK	equ &c7
MAURICE_TEXT_ADDRESS	equ &4000
MAURICE_PLAYER_BANK	equ &c6
MAURICE_PLAYER_ADDRESS	equ &4000
MAURICE_MUSIC_ADDRESS	equ &4800
MAURICE_FONT_BANK	equ &c0
MAURICE_FONT_ADDRESS	equ &3c4e
; ---------------------------
CLEAR10_BOB		equ &49FF
; ---------------------------
BOB_MOVE_X_TABLE1	equ &6500
BOB_MOVE_Y_TABLE1	equ BOB_MOVE_X_TABLE1+&700
BOB_MOVE_X_TABLE2	equ BOB_MOVE_X_TABLE1+&100
BOB_MOVE_Y_TABLE2	equ BOB_MOVE_Y_TABLE1+&100
CLEAR_TABLE		equ &7300
DRAW_TABLE		equ &7500
; ---------------------------
; en &xx00 ou xx est pair !!!
POS_Y_PRECALC8
; pos_y(0-7)*8 + pos_y(8-255)*16
; CLEAR_TABLE/&100 + pos_y(0_31)*16
	defw &0000, &0000+CLEAR_TABLE, &0800, &0010+CLEAR_TABLE, &1000, &0020+CLEAR_TABLE, &1800, &0030+CLEAR_TABLE ,&2000, &0040+CLEAR_TABLE ,&2800, &0050+CLEAR_TABLE, &3000, &0060+CLEAR_TABLE, &3800, &0070+CLEAR_TABLE
	defw &0080, &0080+CLEAR_TABLE, &0880, &0090+CLEAR_TABLE, &1080, &00A0+CLEAR_TABLE, &1880, &00B0+CLEAR_TABLE, &2080, &00C0+CLEAR_TABLE, &2880, &00D0+CLEAR_TABLE, &3080, &00E0+CLEAR_TABLE, &3880, &00F0+CLEAR_TABLE
	defw &0100, &0100+CLEAR_TABLE, &0900, &0110+CLEAR_TABLE, &1100, &0120+CLEAR_TABLE, &1900, &0130+CLEAR_TABLE, &2100, &0140+CLEAR_TABLE, &2900, &0150+CLEAR_TABLE, &3100, &0160+CLEAR_TABLE, &3900, &0170+CLEAR_TABLE
	defw &0180, &0180+CLEAR_TABLE, &0980, &0190+CLEAR_TABLE, &1180, &01A0+CLEAR_TABLE, &1980, &01B0+CLEAR_TABLE, &2180, &01C0+CLEAR_TABLE, &2980, &01D0+CLEAR_TABLE, &3180, &01E0+CLEAR_TABLE, &3980, &01F0+CLEAR_TABLE
	defw &0200, &0000+CLEAR_TABLE, &0A00, &0010+CLEAR_TABLE, &1200, &0020+CLEAR_TABLE, &1A00, &0030+CLEAR_TABLE, &2200, &0040+CLEAR_TABLE, &2A00, &0050+CLEAR_TABLE, &3200, &0060+CLEAR_TABLE, &3A00, &0070+CLEAR_TABLE
	defw &0280, &0080+CLEAR_TABLE, &0A80, &0090+CLEAR_TABLE, &1280, &00A0+CLEAR_TABLE, &1A80, &00B0+CLEAR_TABLE, &2280, &00C0+CLEAR_TABLE, &2A80, &00D0+CLEAR_TABLE, &3280, &00E0+CLEAR_TABLE, &3A80, &00F0+CLEAR_TABLE
	defw &0300, &0100+CLEAR_TABLE, &0B00, &0110+CLEAR_TABLE, &1300, &0120+CLEAR_TABLE, &1B00, &0130+CLEAR_TABLE, &2300, &0140+CLEAR_TABLE, &2B00, &0150+CLEAR_TABLE, &3300, &0160+CLEAR_TABLE, &3B00, &0170+CLEAR_TABLE
	defw &0380, &0180+CLEAR_TABLE, &0B80, &0190+CLEAR_TABLE, &1380, &01A0+CLEAR_TABLE, &1B80, &01B0+CLEAR_TABLE, &2380, &01C0+CLEAR_TABLE, &2B80, &01D0+CLEAR_TABLE, &3380, &01E0+CLEAR_TABLE, &3B80, &01F0+CLEAR_TABLE
	defw &0400, &0000+CLEAR_TABLE, &0C00, &0010+CLEAR_TABLE, &1400, &0020+CLEAR_TABLE, &1C00, &0030+CLEAR_TABLE, &2400, &0040+CLEAR_TABLE, &2C00, &0050+CLEAR_TABLE, &3400, &0060+CLEAR_TABLE, &3C00, &0070+CLEAR_TABLE
	defw &0480, &0080+CLEAR_TABLE, &0C80, &0090+CLEAR_TABLE, &1480, &00A0+CLEAR_TABLE, &1C80, &00B0+CLEAR_TABLE, &2480, &00C0+CLEAR_TABLE, &2C80, &00D0+CLEAR_TABLE, &3480, &00E0+CLEAR_TABLE, &3C80, &00F0+CLEAR_TABLE
	defw &0500, &0100+CLEAR_TABLE, &0D00, &0110+CLEAR_TABLE, &1500, &0120+CLEAR_TABLE, &1D00, &0130+CLEAR_TABLE, &2500, &0140+CLEAR_TABLE, &2D00, &0150+CLEAR_TABLE, &3500, &0160+CLEAR_TABLE, &3D00, &0170+CLEAR_TABLE
	defw &0580, &0180+CLEAR_TABLE, &0D80, &0190+CLEAR_TABLE, &1580, &01A0+CLEAR_TABLE, &1D80, &01B0+CLEAR_TABLE, &2580, &01C0+CLEAR_TABLE, &2D80, &01D0+CLEAR_TABLE, &3580, &01E0+CLEAR_TABLE, &3D80, &01F0+CLEAR_TABLE
	defw &0600, &0000+CLEAR_TABLE, &0E00, &0010+CLEAR_TABLE, &1600, &0020+CLEAR_TABLE, &1E00, &0030+CLEAR_TABLE, &2600, &0040+CLEAR_TABLE, &2E00, &0050+CLEAR_TABLE, &3600, &0060+CLEAR_TABLE, &3E00, &0070+CLEAR_TABLE
	defw &0680, &0080+CLEAR_TABLE, &0E80, &0090+CLEAR_TABLE, &1680, &00A0+CLEAR_TABLE, &1E80, &00B0+CLEAR_TABLE, &2680, &00C0+CLEAR_TABLE, &2E80, &00D0+CLEAR_TABLE, &3680, &00E0+CLEAR_TABLE, &3E80, &00F0+CLEAR_TABLE
	defw &0700, &0100+CLEAR_TABLE
; ---------------------------
BOBS_TABLE_CLEAR80
	defw CLEAR10_BOB,&8000+1,01*06+BOBS_TABLE_CLEAR80
	defw CLEAR10_BOB,&8000+1,02*06+BOBS_TABLE_CLEAR80
	defw CLEAR10_BOB,&8000+1,03*06+BOBS_TABLE_CLEAR80
	defw CLEAR10_BOB,&8000+1,04*06+BOBS_TABLE_CLEAR80
	defw CLEAR10_BOB,&8000+1,05*06+BOBS_TABLE_CLEAR80
	defw CLEAR10_BOB,&8000+1,06*06+BOBS_TABLE_CLEAR80
	defw CLEAR10_BOB,&8000+1,07*06+BOBS_TABLE_CLEAR80
	defw CLEAR10_BOB,&8000+1,08*06+BOBS_TABLE_CLEAR80
	defw CLEAR10_BOB,&8000+1,09*06+BOBS_TABLE_CLEAR80
	defw CLEAR10_BOB,&8000+1,10*06+BOBS_TABLE_CLEAR80
	defw CLEAR10_BOB,&8000+1,11*06+BOBS_TABLE_CLEAR80
	defw CLEAR10_BOB,&8000+1,12*06+BOBS_TABLE_CLEAR80
	defw CLEAR10_BOB,&8000+1,13*06+BOBS_TABLE_CLEAR80
	defw CLEAR10_BOB,&8000+1,14*06+BOBS_TABLE_CLEAR80
	defw CLEAR10_BOB,&8000+1,15*06+BOBS_TABLE_CLEAR80
	defw CLEAR10_BOB,&8000+1,16*06+BOBS_TABLE_CLEAR80
	defw CLEAR10_BOB,&8000+1,17*06+BOBS_TABLE_CLEAR80
	defw CLEAR10_BOB,&8000+1,18*06+BOBS_TABLE_CLEAR80
	defw CLEAR10_BOB,&8000+1,19*06+BOBS_TABLE_CLEAR80
	defw CLEAR10_BOB,&8000+1,20*06+BOBS_TABLE_CLEAR80
	defw CLEAR10_BOB,&8000+1,21*06+BOBS_TABLE_CLEAR80
	defw CLEAR10_BOB,&8000+1,22*06+BOBS_TABLE_CLEAR80
	defw CLEAR10_BOB,&8000+1,23*06+BOBS_TABLE_CLEAR80
	defw CLEAR10_BOB,&8000+1,24*06+BOBS_TABLE_CLEAR80
	defw CLEAR10_BOB,&8000+1,25*06+BOBS_TABLE_CLEAR80
	defw CLEAR10_BOB,&8000+1,26*06+BOBS_TABLE_CLEAR80
	defw BOBS_CLEAR_BACK
	defw BOBS_DRAW80
BOBS_TABLE_CLEARC0
	defw CLEAR10_BOB,&c000+1,01*06+BOBS_TABLE_CLEARC0
	defw CLEAR10_BOB,&c000+1,02*06+BOBS_TABLE_CLEARC0
	defw CLEAR10_BOB,&c000+1,03*06+BOBS_TABLE_CLEARC0
	defw CLEAR10_BOB,&c000+1,04*06+BOBS_TABLE_CLEARC0
	defw CLEAR10_BOB,&c000+1,05*06+BOBS_TABLE_CLEARC0
	defw CLEAR10_BOB,&c000+1,06*06+BOBS_TABLE_CLEARC0
	defw CLEAR10_BOB,&c000+1,07*06+BOBS_TABLE_CLEARC0
	defw CLEAR10_BOB,&c000+1,08*06+BOBS_TABLE_CLEARC0
	defw CLEAR10_BOB,&c000+1,09*06+BOBS_TABLE_CLEARC0
	defw CLEAR10_BOB,&c000+1,10*06+BOBS_TABLE_CLEARC0
	defw CLEAR10_BOB,&c000+1,11*06+BOBS_TABLE_CLEARC0
	defw CLEAR10_BOB,&c000+1,12*06+BOBS_TABLE_CLEARC0
	defw CLEAR10_BOB,&c000+1,13*06+BOBS_TABLE_CLEARC0
	defw CLEAR10_BOB,&c000+1,14*06+BOBS_TABLE_CLEARC0
	defw CLEAR10_BOB,&c000+1,15*06+BOBS_TABLE_CLEARC0
	defw CLEAR10_BOB,&c000+1,16*06+BOBS_TABLE_CLEARC0
	defw CLEAR10_BOB,&c000+1,17*06+BOBS_TABLE_CLEARC0
	defw CLEAR10_BOB,&c000+1,18*06+BOBS_TABLE_CLEARC0
	defw CLEAR10_BOB,&c000+1,19*06+BOBS_TABLE_CLEARC0
	defw CLEAR10_BOB,&c000+1,20*06+BOBS_TABLE_CLEARC0
	defw CLEAR10_BOB,&c000+1,21*06+BOBS_TABLE_CLEARC0
	defw CLEAR10_BOB,&c000+1,22*06+BOBS_TABLE_CLEARC0
	defw CLEAR10_BOB,&c000+1,23*06+BOBS_TABLE_CLEARC0
	defw CLEAR10_BOB,&c000+1,24*06+BOBS_TABLE_CLEARC0
	defw CLEAR10_BOB,&c000+1,25*06+BOBS_TABLE_CLEARC0
	defw CLEAR10_BOB,&c000+1,26*06+BOBS_TABLE_CLEARC0
	defw BOBS_CLEAR_BACK
	defw BOBS_DRAWC0
; ---------------------------
BOBS_TABLE_DRAW80
	defw &4000,&8000+1
	defw &4000,&8000+1
	defw &4000,&8000+1
	defw &4000,&8000+1
	defw &4000,&8000+1
	defw &4000,&8000+1
	defw &4000,&8000+1
	defw &4000,&8000+1
	defw &4000,&8000+1
	defw &4000,&8000+1
	defw &4000,&8000+1
	defw &4000,&8000+1
	defw &4000,&8000+1
	defw &4000,&8000+1
	defw &4000,&8000+1
	defw &4000,&8000+1
	defw &4000,&8000+1
	defw &4000,&8000+1
	defw &4000,&8000+1
	defw &4000,&8000+1
	defw &4000,&8000+1
	defw &4000,&8000+1
	defw &4000,&8000+1
	defw &4000,&8000+1
	defw &4000,&8000+1
	defw &4000,&8000+1
	defw BOBS_DRAW_BACK
; ---------------------------
BOBS_TABLE_DRAWC0
	defw &4000,&c000+1
	defw &4000,&c000+1
	defw &4000,&c000+1
	defw &4000,&c000+1
	defw &4000,&c000+1
	defw &4000,&c000+1
	defw &4000,&c000+1
	defw &4000,&c000+1
	defw &4000,&c000+1
	defw &4000,&c000+1
	defw &4000,&c000+1
	defw &4000,&c000+1
	defw &4000,&c000+1
	defw &4000,&c000+1
	defw &4000,&c000+1
	defw &4000,&c000+1
	defw &4000,&c000+1
	defw &4000,&c000+1
	defw &4000,&c000+1
	defw &4000,&c000+1
	defw &4000,&c000+1
	defw &4000,&c000+1
	defw &4000,&c000+1
	defw &4000,&c000+1
	defw &4000,&c000+1
	defw &4000,&c000+1
	defw BOBS_DRAW_BACK
; ---------------------------
MAURICE_MUSIC_CALL
	defw &432b
	defw &4195
TABLE_JUMP_TEMP
	defw GO_BACK_FROM_MUSIC
	defw 0
; ---------------------------
TABLE_SELECT_ANIM
	defb 3,4,5,4,1,5,4,6,0,1,2,3,4,5,6,1
	defb 2,3,4,3,0,4,3,5,0,1,2,3,4,5,6,0
	defb 1,2,3,2,6,3,2,4,0,1,2,3,4,5,6,6
	defb 0,1,2,1,5,2,1,3,0,1,2,3,4,5,6,5
	defb 6,0,1,0,4,1,0,2,0,1,2,3,4,5,6,4
	defb 5,6,0,6,3,0,6,1,0,1,2,3,4,5,6,3
	defb 4,5,6,5,2,6,5,0,0,1,2,3,4,5,6,2
	defb &ff
; ---------------------------
goooo
; ---------------------------
prepare_main_loop
;	ld bc,&7f00+MAURICE_DRAW_BANK
;	out (c),c
;	ld de,DRAW_BACK
;	ld bc,&ebc3		; ex de,hl + jump to DRAW_BACK
;	jp MAURICE_PREPARE_DRAW
;prepare_main_second_loop
;	ld bc,&7f00+MAURICE_DRAW_BANK
;	out (c),c
;	ld de,0
;	ld bc,&e1c9		; pop hl + ret
;	jp MAURICE_PREPARE_DRAW
;-------------------------
main_loop
	ld sp,TABLE_JUMP_TEMP

	ld bc,&7f00+MAURICE_PLAYER_BANK
	out (c),c

	ret	; go to music
GO_BACK_FROM_MUSIC
;-------------------------
	ld b,&f5
SYNCHRO 
	in a,(c)
	rra
	jr nc,SYNCHRO

	ld bc,&bc00+06
	out (c),c
	ld bc,&bd10
	out (c),c

	ld bc,&7f00+MAURICE_CLEAR_BANK
	out (c),c

	pop af
	ex af,af'

BOBS_CHOOSE_SCREEN
	ld a,&C0
	ld (BOBS_ACTUAL_SCREEN),a
	xor &40
	ld (BOBS_CHOOSE_SCREEN+1),a
	rra	; a = a/2
	rra	; a = a/4
	ld bc,&bc00+12		; screen to &8000 (&2000) or &c000 (&3000)
	out (c),c
	inc b
	out (c),a
	dec b
	inc c
	out (c),c
	inc b

	sub &30
	jr z,BOBS_SCREEN_8000

	ld ix,BOBS_TABLE_DRAWC0
	ld sp,BOBS_TABLE_CLEARC0

	jr BOBS_SCREEN_C000
BOBS_SCREEN_8000

	ld ix,BOBS_TABLE_DRAW80
	ld sp,BOBS_TABLE_CLEAR80

BOBS_SCREEN_C000
	xor a
	out (c),a
	exx
	ld de,&f0ff
	ld bc,&c880
	ret		; go to clear !

BOBS_CLEAR_BACK
	ld de,&7f01
	ld bc,&bc07	; &07
	out (c),c
	inc b
	out (c),d	; &7f
	dec b
	dec c
	out (c),c	; &06
	inc b
	out (c),e	; &01
	dec b
	ld de,&040f
	out (c),d	; &04
	inc b
	out (c),e	; &0f

SECOND_SCREEN_ADDRESS
	ld de,&1000
	ld bc,&bc0c
	out (c),c	; &0c
	inc b
	out (c),d
	dec b
	inc c
	out (c),c	; &0d
	inc b
	out (c),e

	ld bc,&7f00+MAURICE_DRAW_BANK
	out (c),c

	defb &16	; ld d,nn
BOBS_ACTUAL_SCREEN
	defb &00	; d

	defb &01			; ld bc,&0000
	defb DRAW_TABLE/&100		; c
	defb POS_Y_PRECALC8/&200	; b

	exx

	defb &01	; ld bc,nnnn
BOBS_X_ESPACEMENT
	defb &00	; c
BOBS_Y_ESPACEMENT
	defb &00	; b

BOBS_MOVE_X
	ld hl,BOB_MOVE_X_TABLE1+00
BOBS_X_INCREMENT
	ld a,&00
	add l
	ld l,a
	ld (BOBS_MOVE_X+1),a	;hl

BOBS_MOVE_Y
	ld de,BOB_MOVE_Y_TABLE1+32
BOBS_Y_INCREMENT
	ld a,&00
	add e
	ld e,a
	ld (BOBS_MOVE_Y+1),a	;de

	ret
BOBS_DRAW80

; BOB1
	ld a,b		; BOB_Y_ESPACEMENT
	add a,e
	ld e,a
	ld a,(de)	; a = pos_y
	exx

	ld h,b		; POS_Y_PRECALC8/&200 en &xx00 avec xx pair !!!
	ld l,a
	add hl,hl	; hl = pos_y*4
	ld sp,hl	; sp = PTR to pos_y*8 table values
	pop hl		; hl = pos_y(0-7)*8 + pos_y(8-255)*16

	exx
	ld a,c		; BOB_X_ESPACEMENT
	add a,l
	ld l,a
	ld a,(hl)	; a = pos_x
	inc l
	exx

	ld e,a		; e = pos_x
	add hl,de	; hl = (&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x
	ld e,h		; e = (high)(&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x

	ld (0*6+BOBS_TABLE_CLEAR80+02),hl	; save actual screen address
	ld (0*4+BOBS_TABLE_DRAW80+02),hl

	pop hl		; hl = CLEAR_TABLE/&100 + pos_y(0_31)*16
	and 7		; a = pos_x(0-7)
	add a,a		; a = pos_x(0-7)*2
	add a,l		; a = (low) CLEAR_TABLE/&100 + pos_y(0_31)*16 + pos_x(0-7)*2
	ld l,a

	ld sp,hl
	pop hl
	ld (0*6+BOBS_TABLE_CLEAR80),hl	; push clear routine

	ld a,e		; a = (high)(&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x
	and 7*8		; a = pos_y(0_7)*8

	exx
	add a,(hl) 	; a = bobs number*2 + pos_y(0_7)*8
	dec l
	exx

	ld h,c		; DRAW_TABLE/&100 en &xx00
	ld l,a		; e = bobs number*2 + pos_y(0-7)*8
	ld sp,hl
	pop hl
	ld (0*4+BOBS_TABLE_DRAW80),hl	; push draw routine

	exx

; BOB2
	ld a,b		; BOB_Y_ESPACEMENT
	add a,e
	ld e,a
	ld a,(de)	; a = pos_y
	exx

	ld h,b		; POS_Y_PRECALC8/&200 en &xx00 avec xx pair !!!
	ld l,a
	add hl,hl	; hl = pos_y*4
	ld sp,hl	; sp = PTR to pos_y*8 table values
	pop hl		; hl = pos_y(0-7)*8 + pos_y(8-255)*16

	exx
	ld a,c		; BOB_X_ESPACEMENT
	add a,l
	ld l,a
	ld a,(hl)	; a = pos_x
	inc l
	exx

	ld e,a		; e = pos_x
	add hl,de	; hl = (&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x
	ld e,h		; e = (high)(&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x

	ld (1*6+BOBS_TABLE_CLEAR80+02),hl	; save actual screen address
	ld (1*4+BOBS_TABLE_DRAW80+02),hl

	pop hl		; hl = CLEAR_TABLE/&100 + pos_y(0_31)*16
	and 7		; a = pos_x(0-7)
	add a,a		; a = pos_x(0-7)*2
	add a,l		; a = (low) CLEAR_TABLE/&100 + pos_y(0_31)*16 + pos_x(0-7)*2
	ld l,a

	ld sp,hl
	pop hl
	ld (1*6+BOBS_TABLE_CLEAR80),hl	; push clear routine

	ld a,e		; a = (high)(&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x
	and 7*8		; a = pos_y(0_7)*8

	exx
	add a,(hl) 	; a = bobs number*2 + pos_y(0_7)*8
	dec l
	exx

	ld h,c		; DRAW_TABLE/&100 en &xx00
	ld l,a		; e = bobs number*2 + pos_y(0-7)*8
	ld sp,hl
	pop hl
	ld (1*4+BOBS_TABLE_DRAW80),hl	; push draw routine

	exx

; BOB3
	ld a,b		; BOB_Y_ESPACEMENT
	add a,e
	ld e,a
	ld a,(de)	; a = pos_y
	exx

	ld h,b		; POS_Y_PRECALC8/&200 en &xx00 avec xx pair !!!
	ld l,a
	add hl,hl	; hl = pos_y*4
	ld sp,hl	; sp = PTR to pos_y*8 table values
	pop hl		; hl = pos_y(0-7)*8 + pos_y(8-255)*16

	exx
	ld a,c		; BOB_X_ESPACEMENT
	add a,l
	ld l,a
	ld a,(hl)	; a = pos_x
	inc l
	exx

	ld e,a		; e = pos_x
	add hl,de	; hl = (&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x
	ld e,h		; e = (high)(&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x

	ld (2*6+BOBS_TABLE_CLEAR80+02),hl	; save actual screen address
	ld (2*4+BOBS_TABLE_DRAW80+02),hl

	pop hl		; hl = CLEAR_TABLE/&100 + pos_y(0_31)*16
	and 7		; a = pos_x(0-7)
	add a,a		; a = pos_x(0-7)*2
	add a,l		; a = (low) CLEAR_TABLE/&100 + pos_y(0_31)*16 + pos_x(0-7)*2
	ld l,a

	ld sp,hl
	pop hl
	ld (2*6+BOBS_TABLE_CLEAR80),hl	; push clear routine

	ld a,e		; a = (high)(&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x
	and 7*8		; a = pos_y(0_7)*8

	exx
	add a,(hl) 	; a = bobs number*2 + pos_y(0_7)*8
	dec l
	exx

	ld h,c		; DRAW_TABLE/&100 en &xx00
	ld l,a		; e = bobs number*2 + pos_y(0-7)*8
	ld sp,hl
	pop hl
	ld (2*4+BOBS_TABLE_DRAW80),hl	; push draw routine

	exx

; BOB4
	ld a,b		; BOB_Y_ESPACEMENT
	add a,e
	ld e,a
	ld a,(de)	; a = pos_y
	exx

	ld h,b		; POS_Y_PRECALC8/&200 en &xx00 avec xx pair !!!
	ld l,a
	add hl,hl	; hl = pos_y*4
	ld sp,hl	; sp = PTR to pos_y*8 table values
	pop hl		; hl = pos_y(0-7)*8 + pos_y(8-255)*16

	exx
	ld a,c		; BOB_X_ESPACEMENT
	add a,l
	ld l,a
	ld a,(hl)	; a = pos_x
	inc l
	exx

	ld e,a		; e = pos_x
	add hl,de	; hl = (&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x
	ld e,h		; e = (high)(&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x

	ld (3*6+BOBS_TABLE_CLEAR80+02),hl	; save actual screen address
	ld (3*4+BOBS_TABLE_DRAW80+02),hl

	pop hl		; hl = CLEAR_TABLE/&100 + pos_y(0_31)*16
	and 7		; a = pos_x(0-7)
	add a,a		; a = pos_x(0-7)*2
	add a,l		; a = (low) CLEAR_TABLE/&100 + pos_y(0_31)*16 + pos_x(0-7)*2
	ld l,a

	ld sp,hl
	pop hl
	ld (3*6+BOBS_TABLE_CLEAR80),hl	; push clear routine

	ld a,e		; a = (high)(&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x
	and 7*8		; a = pos_y(0_7)*8

	exx
	add a,(hl) 	; a = bobs number*2 + pos_y(0_7)*8
	dec l
	exx

	ld h,c		; DRAW_TABLE/&100 en &xx00
	ld l,a		; e = bobs number*2 + pos_y(0-7)*8
	ld sp,hl
	pop hl
	ld (3*4+BOBS_TABLE_DRAW80),hl	; push draw routine

	exx

; BOB5
	ld a,b		; BOB_Y_ESPACEMENT
	add a,e
	ld e,a
	ld a,(de)	; a = pos_y
	exx

	ld h,b		; POS_Y_PRECALC8/&200 en &xx00 avec xx pair !!!
	ld l,a
	add hl,hl	; hl = pos_y*4
	ld sp,hl	; sp = PTR to pos_y*8 table values
	pop hl		; hl = pos_y(0-7)*8 + pos_y(8-255)*16

	exx
	ld a,c		; BOB_X_ESPACEMENT
	add a,l
	ld l,a
	ld a,(hl)	; a = pos_x
	inc l
	exx

	ld e,a		; e = pos_x
	add hl,de	; hl = (&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x
	ld e,h		; e = (high)(&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x

	ld (4*6+BOBS_TABLE_CLEAR80+02),hl	; save actual screen address
	ld (4*4+BOBS_TABLE_DRAW80+02),hl

	pop hl		; hl = CLEAR_TABLE/&100 + pos_y(0_31)*16
	and 7		; a = pos_x(0-7)
	add a,a		; a = pos_x(0-7)*2
	add a,l		; a = (low) CLEAR_TABLE/&100 + pos_y(0_31)*16 + pos_x(0-7)*2
	ld l,a

	ld sp,hl
	pop hl
	ld (4*6+BOBS_TABLE_CLEAR80),hl	; push clear routine

	ld a,e		; a = (high)(&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x
	and 7*8		; a = pos_y(0_7)*8

	exx
	add a,(hl) 	; a = bobs number*2 + pos_y(0_7)*8
	dec l
	exx

	ld h,c		; DRAW_TABLE/&100 en &xx00
	ld l,a		; e = bobs number*2 + pos_y(0-7)*8
	ld sp,hl
	pop hl
	ld (4*4+BOBS_TABLE_DRAW80),hl	; push draw routine

	exx

; BOB6
	ld a,b		; BOB_Y_ESPACEMENT
	add a,e
	ld e,a
	ld a,(de)	; a = pos_y
	exx

	ld h,b		; POS_Y_PRECALC8/&200 en &xx00 avec xx pair !!!
	ld l,a
	add hl,hl	; hl = pos_y*4
	ld sp,hl	; sp = PTR to pos_y*8 table values
	pop hl		; hl = pos_y(0-7)*8 + pos_y(8-255)*16

	exx
	ld a,c		; BOB_X_ESPACEMENT
	add a,l
	ld l,a
	ld a,(hl)	; a = pos_x
	inc l
	exx

	ld e,a		; e = pos_x
	add hl,de	; hl = (&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x
	ld e,h		; e = (high)(&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x

	ld (5*6+BOBS_TABLE_CLEAR80+02),hl	; save actual screen address
	ld (5*4+BOBS_TABLE_DRAW80+02),hl

	pop hl		; hl = CLEAR_TABLE/&100 + pos_y(0_31)*16
	and 7		; a = pos_x(0-7)
	add a,a		; a = pos_x(0-7)*2
	add a,l		; a = (low) CLEAR_TABLE/&100 + pos_y(0_31)*16 + pos_x(0-7)*2
	ld l,a

	ld sp,hl
	pop hl
	ld (5*6+BOBS_TABLE_CLEAR80),hl	; push clear routine

	ld a,e		; a = (high)(&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x
	and 7*8		; a = pos_y(0_7)*8

	exx
	add a,(hl) 	; a = bobs number*2 + pos_y(0_7)*8
	dec l
	exx

	ld h,c		; DRAW_TABLE/&100 en &xx00
	ld l,a		; e = bobs number*2 + pos_y(0-7)*8
	ld sp,hl
	pop hl
	ld (5*4+BOBS_TABLE_DRAW80),hl	; push draw routine

	exx

; BOB7
	ld a,b		; BOB_Y_ESPACEMENT
	add a,e
	ld e,a
	ld a,(de)	; a = pos_y
	exx

	ld h,b		; POS_Y_PRECALC8/&200 en &xx00 avec xx pair !!!
	ld l,a
	add hl,hl	; hl = pos_y*4
	ld sp,hl	; sp = PTR to pos_y*8 table values
	pop hl		; hl = pos_y(0-7)*8 + pos_y(8-255)*16

	exx
	ld a,c		; BOB_X_ESPACEMENT
	add a,l
	ld l,a
	ld a,(hl)	; a = pos_x
	inc l
	exx

	ld e,a		; e = pos_x
	add hl,de	; hl = (&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x
	ld e,h		; e = (high)(&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x

	ld (6*6+BOBS_TABLE_CLEAR80+02),hl	; save actual screen address
	ld (6*4+BOBS_TABLE_DRAW80+02),hl

	pop hl		; hl = CLEAR_TABLE/&100 + pos_y(0_31)*16
	and 7		; a = pos_x(0-7)
	add a,a		; a = pos_x(0-7)*2
	add a,l		; a = (low) CLEAR_TABLE/&100 + pos_y(0_31)*16 + pos_x(0-7)*2
	ld l,a

	ld sp,hl
	pop hl
	ld (6*6+BOBS_TABLE_CLEAR80),hl	; push clear routine

	ld a,e		; a = (high)(&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x
	and 7*8		; a = pos_y(0_7)*8

	exx
	add a,(hl) 	; a = bobs number*2 + pos_y(0_7)*8
	dec l
	exx

	ld h,c		; DRAW_TABLE/&100 en &xx00
	ld l,a		; e = bobs number*2 + pos_y(0-7)*8
	ld sp,hl
	pop hl
	ld (6*4+BOBS_TABLE_DRAW80),hl	; push draw routine

	exx

; BOB8
	ld a,b		; BOB_Y_ESPACEMENT
	add a,e
	ld e,a
	ld a,(de)	; a = pos_y
	exx

	ld h,b		; POS_Y_PRECALC8/&200 en &xx00 avec xx pair !!!
	ld l,a
	add hl,hl	; hl = pos_y*4
	ld sp,hl	; sp = PTR to pos_y*8 table values
	pop hl		; hl = pos_y(0-7)*8 + pos_y(8-255)*16

	exx
	ld a,c		; BOB_X_ESPACEMENT
	add a,l
	ld l,a
	ld a,(hl)	; a = pos_x
	inc l
	exx

	ld e,a		; e = pos_x
	add hl,de	; hl = (&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x
	ld e,h		; e = (high)(&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x

	ld (7*6+BOBS_TABLE_CLEAR80+02),hl	; save actual screen address
	ld (7*4+BOBS_TABLE_DRAW80+02),hl

	pop hl		; hl = CLEAR_TABLE/&100 + pos_y(0_31)*16
	and 7		; a = pos_x(0-7)
	add a,a		; a = pos_x(0-7)*2
	add a,l		; a = (low) CLEAR_TABLE/&100 + pos_y(0_31)*16 + pos_x(0-7)*2
	ld l,a

	ld sp,hl
	pop hl
	ld (7*6+BOBS_TABLE_CLEAR80),hl	; push clear routine

	ld a,e		; a = (high)(&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x
	and 7*8		; a = pos_y(0_7)*8

	exx
	add a,(hl) 	; a = bobs number*2 + pos_y(0_7)*8
	dec l
	exx

	ld h,c		; DRAW_TABLE/&100 en &xx00
	ld l,a		; e = bobs number*2 + pos_y(0-7)*8
	ld sp,hl
	pop hl
	ld (7*4+BOBS_TABLE_DRAW80),hl	; push draw routine

	exx

; BOB9
	ld a,b		; BOB_Y_ESPACEMENT
	add a,e
	ld e,a
	ld a,(de)	; a = pos_y
	exx

	ld h,b		; POS_Y_PRECALC8/&200 en &xx00 avec xx pair !!!
	ld l,a
	add hl,hl	; hl = pos_y*4
	ld sp,hl	; sp = PTR to pos_y*8 table values
	pop hl		; hl = pos_y(0-7)*8 + pos_y(8-255)*16

	exx
	ld a,c		; BOB_X_ESPACEMENT
	add a,l
	ld l,a
	ld a,(hl)	; a = pos_x
	inc l
	exx

	ld e,a		; e = pos_x
	add hl,de	; hl = (&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x
	ld e,h		; e = (high)(&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x

	ld (8*6+BOBS_TABLE_CLEAR80+02),hl	; save actual screen address
	ld (8*4+BOBS_TABLE_DRAW80+02),hl

	pop hl		; hl = CLEAR_TABLE/&100 + pos_y(0_31)*16
	and 7		; a = pos_x(0-7)
	add a,a		; a = pos_x(0-7)*2
	add a,l		; a = (low) CLEAR_TABLE/&100 + pos_y(0_31)*16 + pos_x(0-7)*2
	ld l,a

	ld sp,hl
	pop hl
	ld (8*6+BOBS_TABLE_CLEAR80),hl	; push clear routine

	ld a,e		; a = (high)(&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x
	and 7*8		; a = pos_y(0_7)*8

	exx
	add a,(hl) 	; a = bobs number*2 + pos_y(0_7)*8
	dec l
	exx

	ld h,c		; DRAW_TABLE/&100 en &xx00
	ld l,a		; e = bobs number*2 + pos_y(0-7)*8
	ld sp,hl
	pop hl
	ld (8*4+BOBS_TABLE_DRAW80),hl	; push draw routine

	exx

; BOB10
	ld a,b		; BOB_Y_ESPACEMENT
	add a,e
	ld e,a
	ld a,(de)	; a = pos_y
	exx

	ld h,b		; POS_Y_PRECALC8/&200 en &xx00 avec xx pair !!!
	ld l,a
	add hl,hl	; hl = pos_y*4
	ld sp,hl	; sp = PTR to pos_y*8 table values
	pop hl		; hl = pos_y(0-7)*8 + pos_y(8-255)*16

	exx
	ld a,c		; BOB_X_ESPACEMENT
	add a,l
	ld l,a
	ld a,(hl)	; a = pos_x
	inc l
	exx

	ld e,a		; e = pos_x
	add hl,de	; hl = (&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x
	ld e,h		; e = (high)(&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x

	ld (9*6+BOBS_TABLE_CLEAR80+02),hl	; save actual screen address
	ld (9*4+BOBS_TABLE_DRAW80+02),hl

	pop hl		; hl = CLEAR_TABLE/&100 + pos_y(0_31)*16
	and 7		; a = pos_x(0-7)
	add a,a		; a = pos_x(0-7)*2
	add a,l		; a = (low) CLEAR_TABLE/&100 + pos_y(0_31)*16 + pos_x(0-7)*2
	ld l,a

	ld sp,hl
	pop hl
	ld (9*6+BOBS_TABLE_CLEAR80),hl	; push clear routine

	ld a,e		; a = (high)(&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x
	and 7*8		; a = pos_y(0_7)*8

	exx
	add a,(hl) 	; a = bobs number*2 + pos_y(0_7)*8
	dec l
	exx

	ld h,c		; DRAW_TABLE/&100 en &xx00
	ld l,a		; e = bobs number*2 + pos_y(0-7)*8
	ld sp,hl
	pop hl
	ld (9*4+BOBS_TABLE_DRAW80),hl	; push draw routine

	exx

; BOB11
	ld a,b		; BOB_Y_ESPACEMENT
	add a,e
	ld e,a
	ld a,(de)	; a = pos_y
	exx

	ld h,b		; POS_Y_PRECALC8/&200 en &xx00 avec xx pair !!!
	ld l,a
	add hl,hl	; hl = pos_y*4
	ld sp,hl	; sp = PTR to pos_y*8 table values
	pop hl		; hl = pos_y(0-7)*8 + pos_y(8-255)*16

	exx
	ld a,c		; BOB_X_ESPACEMENT
	add a,l
	ld l,a
	ld a,(hl)	; a = pos_x
	inc l
	exx

	ld e,a		; e = pos_x
	add hl,de	; hl = (&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x
	ld e,h		; e = (high)(&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x

	ld (10*6+BOBS_TABLE_CLEAR80+02),hl	; save actual screen address
	ld (10*4+BOBS_TABLE_DRAW80+02),hl

	pop hl		; hl = CLEAR_TABLE/&100 + pos_y(0_31)*16
	and 7		; a = pos_x(0-7)
	add a,a		; a = pos_x(0-7)*2
	add a,l		; a = (low) CLEAR_TABLE/&100 + pos_y(0_31)*16 + pos_x(0-7)*2
	ld l,a

	ld sp,hl
	pop hl
	ld (10*6+BOBS_TABLE_CLEAR80),hl	; push clear routine

	ld a,e		; a = (high)(&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x
	and 7*8		; a = pos_y(0_7)*8

	exx
	add a,(hl) 	; a = bobs number*2 + pos_y(0_7)*8
	dec l
	exx

	ld h,c		; DRAW_TABLE/&100 en &xx00
	ld l,a		; e = bobs number*2 + pos_y(0-7)*8
	ld sp,hl
	pop hl
	ld (10*4+BOBS_TABLE_DRAW80),hl	; push draw routine

	exx

; BOB12
	ld a,b		; BOB_Y_ESPACEMENT
	add a,e
	ld e,a
	ld a,(de)	; a = pos_y
	exx

	ld h,b		; POS_Y_PRECALC8/&200 en &xx00 avec xx pair !!!
	ld l,a
	add hl,hl	; hl = pos_y*4
	ld sp,hl	; sp = PTR to pos_y*8 table values
	pop hl		; hl = pos_y(0-7)*8 + pos_y(8-255)*16

	exx
	ld a,c		; BOB_X_ESPACEMENT
	add a,l
	ld l,a
	ld a,(hl)	; a = pos_x
	inc l
	exx

	ld e,a		; e = pos_x
	add hl,de	; hl = (&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x
	ld e,h		; e = (high)(&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x

	ld (11*6+BOBS_TABLE_CLEAR80+02),hl	; save actual screen address
	ld (11*4+BOBS_TABLE_DRAW80+02),hl

	pop hl		; hl = CLEAR_TABLE/&100 + pos_y(0_31)*16
	and 7		; a = pos_x(0-7)
	add a,a		; a = pos_x(0-7)*2
	add a,l		; a = (low) CLEAR_TABLE/&100 + pos_y(0_31)*16 + pos_x(0-7)*2
	ld l,a

	ld sp,hl
	pop hl
	ld (11*6+BOBS_TABLE_CLEAR80),hl	; push clear routine

	ld a,e		; a = (high)(&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x
	and 7*8		; a = pos_y(0_7)*8

	exx
	add a,(hl) 	; a = bobs number*2 + pos_y(0_7)*8
	dec l
	exx

	ld h,c		; DRAW_TABLE/&100 en &xx00
	ld l,a		; e = bobs number*2 + pos_y(0-7)*8
	ld sp,hl
	pop hl
	ld (11*4+BOBS_TABLE_DRAW80),hl	; push draw routine

	exx

; BOB13
	ld a,b		; BOB_Y_ESPACEMENT
	add a,e
	ld e,a
	ld a,(de)	; a = pos_y
	exx

	ld h,b		; POS_Y_PRECALC8/&200 en &xx00 avec xx pair !!!
	ld l,a
	add hl,hl	; hl = pos_y*4
	ld sp,hl	; sp = PTR to pos_y*8 table values
	pop hl		; hl = pos_y(0-7)*8 + pos_y(8-255)*16

	exx
	ld a,c		; BOB_X_ESPACEMENT
	add a,l
	ld l,a
	ld a,(hl)	; a = pos_x
	inc l
	exx

	ld e,a		; e = pos_x
	add hl,de	; hl = (&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x
	ld e,h		; e = (high)(&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x

	ld (12*6+BOBS_TABLE_CLEAR80+02),hl	; save actual screen address
	ld (12*4+BOBS_TABLE_DRAW80+02),hl

	pop hl		; hl = CLEAR_TABLE/&100 + pos_y(0_31)*16
	and 7		; a = pos_x(0-7)
	add a,a		; a = pos_x(0-7)*2
	add a,l		; a = (low) CLEAR_TABLE/&100 + pos_y(0_31)*16 + pos_x(0-7)*2
	ld l,a

	ld sp,hl
	pop hl
	ld (12*6+BOBS_TABLE_CLEAR80),hl	; push clear routine

	ld a,e		; a = (high)(&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x
	and 7*8		; a = pos_y(0_7)*8

	exx
	add a,(hl) 	; a = bobs number*2 + pos_y(0_7)*8
	dec l
	exx

	ld h,c		; DRAW_TABLE/&100 en &xx00
	ld l,a		; e = bobs number*2 + pos_y(0-7)*8
	ld sp,hl
	pop hl
	ld (12*4+BOBS_TABLE_DRAW80),hl	; push draw routine

	exx

; BOB14
	ld a,b		; BOB_Y_ESPACEMENT
	add a,e
	ld e,a
	ld a,(de)	; a = pos_y
	exx

	ld h,b		; POS_Y_PRECALC8/&200 en &xx00 avec xx pair !!!
	ld l,a
	add hl,hl	; hl = pos_y*4
	ld sp,hl	; sp = PTR to pos_y*8 table values
	pop hl		; hl = pos_y(0-7)*8 + pos_y(8-255)*16

	exx
	ld a,c		; BOB_X_ESPACEMENT
	add a,l
	ld l,a
	ld a,(hl)	; a = pos_x
	inc l
	exx

	ld e,a		; e = pos_x
	add hl,de	; hl = (&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x
	ld e,h		; e = (high)(&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x

	ld (13*6+BOBS_TABLE_CLEAR80+02),hl	; save actual screen address
	ld (13*4+BOBS_TABLE_DRAW80+02),hl

	pop hl		; hl = CLEAR_TABLE/&100 + pos_y(0_31)*16
	and 7		; a = pos_x(0-7)
	add a,a		; a = pos_x(0-7)*2
	add a,l		; a = (low) CLEAR_TABLE/&100 + pos_y(0_31)*16 + pos_x(0-7)*2
	ld l,a

	ld sp,hl
	pop hl
	ld (13*6+BOBS_TABLE_CLEAR80),hl	; push clear routine

	ld a,e		; a = (high)(&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x
	and 7*8		; a = pos_y(0_7)*8

	exx
	add a,(hl) 	; a = bobs number*2 + pos_y(0_7)*8
	dec l
	exx

	ld h,c		; DRAW_TABLE/&100 en &xx00
	ld l,a		; e = bobs number*2 + pos_y(0-7)*8
	ld sp,hl
	pop hl
	ld (13*4+BOBS_TABLE_DRAW80),hl	; push draw routine

	exx

; BOB15
	ld a,b		; BOB_Y_ESPACEMENT
	add a,e
	ld e,a
	ld a,(de)	; a = pos_y
	exx

	ld h,b		; POS_Y_PRECALC8/&200 en &xx00 avec xx pair !!!
	ld l,a
	add hl,hl	; hl = pos_y*4
	ld sp,hl	; sp = PTR to pos_y*8 table values
	pop hl		; hl = pos_y(0-7)*8 + pos_y(8-255)*16

	exx
	ld a,c		; BOB_X_ESPACEMENT
	add a,l
	ld l,a
	ld a,(hl)	; a = pos_x
	inc l
	exx

	ld e,a		; e = pos_x
	add hl,de	; hl = (&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x
	ld e,h		; e = (high)(&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x

	ld (14*6+BOBS_TABLE_CLEAR80+02),hl	; save actual screen address
	ld (14*4+BOBS_TABLE_DRAW80+02),hl

	pop hl		; hl = CLEAR_TABLE/&100 + pos_y(0_31)*16
	and 7		; a = pos_x(0-7)
	add a,a		; a = pos_x(0-7)*2
	add a,l		; a = (low) CLEAR_TABLE/&100 + pos_y(0_31)*16 + pos_x(0-7)*2
	ld l,a

	ld sp,hl
	pop hl
	ld (14*6+BOBS_TABLE_CLEAR80),hl	; push clear routine

	ld a,e		; a = (high)(&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x
	and 7*8		; a = pos_y(0_7)*8

	exx
	add a,(hl) 	; a = bobs number*2 + pos_y(0_7)*8
	dec l
	exx

	ld h,c		; DRAW_TABLE/&100 en &xx00
	ld l,a		; e = bobs number*2 + pos_y(0-7)*8
	ld sp,hl
	pop hl
	ld (14*4+BOBS_TABLE_DRAW80),hl	; push draw routine

	exx

; BOB16
	ld a,b		; BOB_Y_ESPACEMENT
	add a,e
	ld e,a
	ld a,(de)	; a = pos_y
	exx

	ld h,b		; POS_Y_PRECALC8/&200 en &xx00 avec xx pair !!!
	ld l,a
	add hl,hl	; hl = pos_y*4
	ld sp,hl	; sp = PTR to pos_y*8 table values
	pop hl		; hl = pos_y(0-7)*8 + pos_y(8-255)*16

	exx
	ld a,c		; BOB_X_ESPACEMENT
	add a,l
	ld l,a
	ld a,(hl)	; a = pos_x
	inc l
	exx

	ld e,a		; e = pos_x
	add hl,de	; hl = (&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x
	ld e,h		; e = (high)(&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x

	ld (15*6+BOBS_TABLE_CLEAR80+02),hl	; save actual screen address
	ld (15*4+BOBS_TABLE_DRAW80+02),hl

	pop hl		; hl = CLEAR_TABLE/&100 + pos_y(0_31)*16
	and 7		; a = pos_x(0-7)
	add a,a		; a = pos_x(0-7)*2
	add a,l		; a = (low) CLEAR_TABLE/&100 + pos_y(0_31)*16 + pos_x(0-7)*2
	ld l,a

	ld sp,hl
	pop hl
	ld (15*6+BOBS_TABLE_CLEAR80),hl	; push clear routine

	ld a,e		; a = (high)(&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x
	and 7*8		; a = pos_y(0_7)*8

	exx
	add a,(hl) 	; a = bobs number*2 + pos_y(0_7)*8
	dec l
	exx

	ld h,c		; DRAW_TABLE/&100 en &xx00
	ld l,a		; e = bobs number*2 + pos_y(0-7)*8
	ld sp,hl
	pop hl
	ld (15*4+BOBS_TABLE_DRAW80),hl	; push draw routine

	exx

; BOB17
	ld a,b		; BOB_Y_ESPACEMENT
	add a,e
	ld e,a
	ld a,(de)	; a = pos_y
	exx

	ld h,b		; POS_Y_PRECALC8/&200 en &xx00 avec xx pair !!!
	ld l,a
	add hl,hl	; hl = pos_y*4
	ld sp,hl	; sp = PTR to pos_y*8 table values
	pop hl		; hl = pos_y(0-7)*8 + pos_y(8-255)*16

	exx
	ld a,c		; BOB_X_ESPACEMENT
	add a,l
	ld l,a
	ld a,(hl)	; a = pos_x
	inc l
	exx

	ld e,a		; e = pos_x
	add hl,de	; hl = (&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x
	ld e,h		; e = (high)(&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x

	ld (16*6+BOBS_TABLE_CLEAR80+02),hl	; save actual screen address
	ld (16*4+BOBS_TABLE_DRAW80+02),hl

	pop hl		; hl = CLEAR_TABLE/&100 + pos_y(0_31)*16
	and 7		; a = pos_x(0-7)
	add a,a		; a = pos_x(0-7)*2
	add a,l		; a = (low) CLEAR_TABLE/&100 + pos_y(0_31)*16 + pos_x(0-7)*2
	ld l,a

	ld sp,hl
	pop hl
	ld (16*6+BOBS_TABLE_CLEAR80),hl	; push clear routine

	ld a,e		; a = (high)(&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x
	and 7*8		; a = pos_y(0_7)*8

	exx
	add a,(hl) 	; a = bobs number*2 + pos_y(0_7)*8
	dec l
	exx

	ld h,c		; DRAW_TABLE/&100 en &xx00
	ld l,a		; e = bobs number*2 + pos_y(0-7)*8
	ld sp,hl
	pop hl
	ld (16*4+BOBS_TABLE_DRAW80),hl	; push draw routine

	exx

; BOB18
	ld a,b		; BOB_Y_ESPACEMENT
	add a,e
	ld e,a
	ld a,(de)	; a = pos_y
	exx

	ld h,b		; POS_Y_PRECALC8/&200 en &xx00 avec xx pair !!!
	ld l,a
	add hl,hl	; hl = pos_y*4
	ld sp,hl	; sp = PTR to pos_y*8 table values
	pop hl		; hl = pos_y(0-7)*8 + pos_y(8-255)*16

	exx
	ld a,c		; BOB_X_ESPACEMENT
	add a,l
	ld l,a
	ld a,(hl)	; a = pos_x
	inc l
	exx

	ld e,a		; e = pos_x
	add hl,de	; hl = (&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x
	ld e,h		; e = (high)(&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x

	ld (17*6+BOBS_TABLE_CLEAR80+02),hl	; save actual screen address
	ld (17*4+BOBS_TABLE_DRAW80+02),hl

	pop hl		; hl = CLEAR_TABLE/&100 + pos_y(0_31)*16
	and 7		; a = pos_x(0-7)
	add a,a		; a = pos_x(0-7)*2
	add a,l		; a = (low) CLEAR_TABLE/&100 + pos_y(0_31)*16 + pos_x(0-7)*2
	ld l,a

	ld sp,hl
	pop hl
	ld (17*6+BOBS_TABLE_CLEAR80),hl	; push clear routine

	ld a,e		; a = (high)(&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x
	and 7*8		; a = pos_y(0_7)*8

	exx
	add a,(hl) 	; a = bobs number*2 + pos_y(0_7)*8
	dec l
	exx

	ld h,c		; DRAW_TABLE/&100 en &xx00
	ld l,a		; e = bobs number*2 + pos_y(0-7)*8
	ld sp,hl
	pop hl
	ld (17*4+BOBS_TABLE_DRAW80),hl	; push draw routine

	exx

; BOB19
	ld a,b		; BOB_Y_ESPACEMENT
	add a,e
	ld e,a
	ld a,(de)	; a = pos_y
	exx

	ld h,b		; POS_Y_PRECALC8/&200 en &xx00 avec xx pair !!!
	ld l,a
	add hl,hl	; hl = pos_y*4
	ld sp,hl	; sp = PTR to pos_y*8 table values
	pop hl		; hl = pos_y(0-7)*8 + pos_y(8-255)*16

	exx
	ld a,c		; BOB_X_ESPACEMENT
	add a,l
	ld l,a
	ld a,(hl)	; a = pos_x
	inc l
	exx

	ld e,a		; e = pos_x
	add hl,de	; hl = (&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x
	ld e,h		; e = (high)(&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x

	ld (18*6+BOBS_TABLE_CLEAR80+02),hl	; save actual screen address
	ld (18*4+BOBS_TABLE_DRAW80+02),hl

	pop hl		; hl = CLEAR_TABLE/&100 + pos_y(0_31)*16
	and 7		; a = pos_x(0-7)
	add a,a		; a = pos_x(0-7)*2
	add a,l		; a = (low) CLEAR_TABLE/&100 + pos_y(0_31)*16 + pos_x(0-7)*2
	ld l,a

	ld sp,hl
	pop hl
	ld (18*6+BOBS_TABLE_CLEAR80),hl	; push clear routine

	ld a,e		; a = (high)(&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x
	and 7*8		; a = pos_y(0_7)*8

	exx
	add a,(hl) 	; a = bobs number*2 + pos_y(0_7)*8
	dec l
	exx

	ld h,c		; DRAW_TABLE/&100 en &xx00
	ld l,a		; e = bobs number*2 + pos_y(0-7)*8
	ld sp,hl
	pop hl
	ld (18*4+BOBS_TABLE_DRAW80),hl	; push draw routine

	exx

; BOB20
	ld a,b		; BOB_Y_ESPACEMENT
	add a,e
	ld e,a
	ld a,(de)	; a = pos_y
	exx

	ld h,b		; POS_Y_PRECALC8/&200 en &xx00 avec xx pair !!!
	ld l,a
	add hl,hl	; hl = pos_y*4
	ld sp,hl	; sp = PTR to pos_y*8 table values
	pop hl		; hl = pos_y(0-7)*8 + pos_y(8-255)*16

	exx
	ld a,c		; BOB_X_ESPACEMENT
	add a,l
	ld l,a
	ld a,(hl)	; a = pos_x
	inc l
	exx

	ld e,a		; e = pos_x
	add hl,de	; hl = (&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x
	ld e,h		; e = (high)(&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x

	ld (19*6+BOBS_TABLE_CLEAR80+02),hl	; save actual screen address
	ld (19*4+BOBS_TABLE_DRAW80+02),hl

	pop hl		; hl = CLEAR_TABLE/&100 + pos_y(0_31)*16
	and 7		; a = pos_x(0-7)
	add a,a		; a = pos_x(0-7)*2
	add a,l		; a = (low) CLEAR_TABLE/&100 + pos_y(0_31)*16 + pos_x(0-7)*2
	ld l,a

	ld sp,hl
	pop hl
	ld (19*6+BOBS_TABLE_CLEAR80),hl	; push clear routine

	ld a,e		; a = (high)(&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x
	and 7*8		; a = pos_y(0_7)*8

	exx
	add a,(hl) 	; a = bobs number*2 + pos_y(0_7)*8
	dec l
	exx

	ld h,c		; DRAW_TABLE/&100 en &xx00
	ld l,a		; e = bobs number*2 + pos_y(0-7)*8
	ld sp,hl
	pop hl
	ld (19*4+BOBS_TABLE_DRAW80),hl	; push draw routine

	exx

; BOB21
	ld a,b		; BOB_Y_ESPACEMENT
	add a,e
	ld e,a
	ld a,(de)	; a = pos_y
	exx

	ld h,b		; POS_Y_PRECALC8/&200 en &xx00 avec xx pair !!!
	ld l,a
	add hl,hl	; hl = pos_y*4
	ld sp,hl	; sp = PTR to pos_y*8 table values
	pop hl		; hl = pos_y(0-7)*8 + pos_y(8-255)*16

	exx
	ld a,c		; BOB_X_ESPACEMENT
	add a,l
	ld l,a
	ld a,(hl)	; a = pos_x
	inc l
	exx

	ld e,a		; e = pos_x
	add hl,de	; hl = (&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x
	ld e,h		; e = (high)(&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x

	ld (20*6+BOBS_TABLE_CLEAR80+02),hl	; save actual screen address
	ld (20*4+BOBS_TABLE_DRAW80+02),hl

	pop hl		; hl = CLEAR_TABLE/&100 + pos_y(0_31)*16
	and 7		; a = pos_x(0-7)
	add a,a		; a = pos_x(0-7)*2
	add a,l		; a = (low) CLEAR_TABLE/&100 + pos_y(0_31)*16 + pos_x(0-7)*2
	ld l,a

	ld sp,hl
	pop hl
	ld (20*6+BOBS_TABLE_CLEAR80),hl	; push clear routine

	ld a,e		; a = (high)(&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x
	and 7*8		; a = pos_y(0_7)*8

	exx
	add a,(hl) 	; a = bobs number*2 + pos_y(0_7)*8
	dec l
	exx

	ld h,c		; DRAW_TABLE/&100 en &xx00
	ld l,a		; e = bobs number*2 + pos_y(0-7)*8
	ld sp,hl
	pop hl
	ld (20*4+BOBS_TABLE_DRAW80),hl	; push draw routine

	exx

; BOB22
	ld a,b		; BOB_Y_ESPACEMENT
	add a,e
	ld e,a
	ld a,(de)	; a = pos_y
	exx

	ld h,b		; POS_Y_PRECALC8/&200 en &xx00 avec xx pair !!!
	ld l,a
	add hl,hl	; hl = pos_y*4
	ld sp,hl	; sp = PTR to pos_y*8 table values
	pop hl		; hl = pos_y(0-7)*8 + pos_y(8-255)*16

	exx
	ld a,c		; BOB_X_ESPACEMENT
	add a,l
	ld l,a
	ld a,(hl)	; a = pos_x
	inc l
	exx

	ld e,a		; e = pos_x
	add hl,de	; hl = (&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x
	ld e,h		; e = (high)(&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x

	ld (21*6+BOBS_TABLE_CLEAR80+02),hl	; save actual screen address
	ld (21*4+BOBS_TABLE_DRAW80+02),hl

	pop hl		; hl = CLEAR_TABLE/&100 + pos_y(0_31)*16
	and 7		; a = pos_x(0-7)
	add a,a		; a = pos_x(0-7)*2
	add a,l		; a = (low) CLEAR_TABLE/&100 + pos_y(0_31)*16 + pos_x(0-7)*2
	ld l,a

	ld sp,hl
	pop hl
	ld (21*6+BOBS_TABLE_CLEAR80),hl	; push clear routine

	ld a,e		; a = (high)(&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x
	and 7*8		; a = pos_y(0_7)*8

	exx
	add a,(hl) 	; a = bobs number*2 + pos_y(0_7)*8
	dec l
	exx

	ld h,c		; DRAW_TABLE/&100 en &xx00
	ld l,a		; e = bobs number*2 + pos_y(0-7)*8
	ld sp,hl
	pop hl
	ld (21*4+BOBS_TABLE_DRAW80),hl	; push draw routine

	exx

; BOB23
	ld a,b		; BOB_Y_ESPACEMENT
	add a,e
	ld e,a
	ld a,(de)	; a = pos_y
	exx

	ld h,b		; POS_Y_PRECALC8/&200 en &xx00 avec xx pair !!!
	ld l,a
	add hl,hl	; hl = pos_y*4
	ld sp,hl	; sp = PTR to pos_y*8 table values
	pop hl		; hl = pos_y(0-7)*8 + pos_y(8-255)*16

	exx
	ld a,c		; BOB_X_ESPACEMENT
	add a,l
	ld l,a
	ld a,(hl)	; a = pos_x
	inc l
	exx

	ld e,a		; e = pos_x
	add hl,de	; hl = (&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x
	ld e,h		; e = (high)(&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x

	ld (22*6+BOBS_TABLE_CLEAR80+02),hl	; save actual screen address
	ld (22*4+BOBS_TABLE_DRAW80+02),hl

	pop hl		; hl = CLEAR_TABLE/&100 + pos_y(0_31)*16
	and 7		; a = pos_x(0-7)
	add a,a		; a = pos_x(0-7)*2
	add a,l		; a = (low) CLEAR_TABLE/&100 + pos_y(0_31)*16 + pos_x(0-7)*2
	ld l,a

	ld sp,hl
	pop hl
	ld (22*6+BOBS_TABLE_CLEAR80),hl	; push clear routine

	ld a,e		; a = (high)(&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x
	and 7*8		; a = pos_y(0_7)*8

	exx
	add a,(hl) 	; a = bobs number*2 + pos_y(0_7)*8
	dec l
	exx

	ld h,c		; DRAW_TABLE/&100 en &xx00
	ld l,a		; e = bobs number*2 + pos_y(0-7)*8
	ld sp,hl
	pop hl
	ld (22*4+BOBS_TABLE_DRAW80),hl	; push draw routine

	exx

; BOB24
	ld a,b		; BOB_Y_ESPACEMENT
	add a,e
	ld e,a
	ld a,(de)	; a = pos_y
	exx

	ld h,b		; POS_Y_PRECALC8/&200 en &xx00 avec xx pair !!!
	ld l,a
	add hl,hl	; hl = pos_y*4
	ld sp,hl	; sp = PTR to pos_y*8 table values
	pop hl		; hl = pos_y(0-7)*8 + pos_y(8-255)*16

	exx
	ld a,c		; BOB_X_ESPACEMENT
	add a,l
	ld l,a
	ld a,(hl)	; a = pos_x
	inc l
	exx

	ld e,a		; e = pos_x
	add hl,de	; hl = (&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x
	ld e,h		; e = (high)(&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x

	ld (23*6+BOBS_TABLE_CLEAR80+02),hl	; save actual screen address
	ld (23*4+BOBS_TABLE_DRAW80+02),hl

	pop hl		; hl = CLEAR_TABLE/&100 + pos_y(0_31)*16
	and 7		; a = pos_x(0-7)
	add a,a		; a = pos_x(0-7)*2
	add a,l		; a = (low) CLEAR_TABLE/&100 + pos_y(0_31)*16 + pos_x(0-7)*2
	ld l,a

	ld sp,hl
	pop hl
	ld (23*6+BOBS_TABLE_CLEAR80),hl	; push clear routine

	ld a,e		; a = (high)(&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x
	and 7*8		; a = pos_y(0_7)*8

	exx
	add a,(hl) 	; a = bobs number*2 + pos_y(0_7)*8
	dec l
	exx

	ld h,c		; DRAW_TABLE/&100 en &xx00
	ld l,a		; e = bobs number*2 + pos_y(0-7)*8
	ld sp,hl
	pop hl
	ld (23*4+BOBS_TABLE_DRAW80),hl	; push draw routine

	exx

; BOB25
	ld a,b		; BOB_Y_ESPACEMENT
	add a,e
	ld e,a
	ld a,(de)	; a = pos_y
	exx

	ld h,b		; POS_Y_PRECALC8/&200 en &xx00 avec xx pair !!!
	ld l,a
	add hl,hl	; hl = pos_y*4
	ld sp,hl	; sp = PTR to pos_y*8 table values
	pop hl		; hl = pos_y(0-7)*8 + pos_y(8-255)*16

	exx
	ld a,c		; BOB_X_ESPACEMENT
	add a,l
	ld l,a
	ld a,(hl)	; a = pos_x
	inc l
	exx

	ld e,a		; e = pos_x
	add hl,de	; hl = (&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x
	ld e,h		; e = (high)(&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x

	ld (24*6+BOBS_TABLE_CLEAR80+02),hl	; save actual screen address
	ld (24*4+BOBS_TABLE_DRAW80+02),hl

	pop hl		; hl = CLEAR_TABLE/&100 + pos_y(0_31)*16
	and 7		; a = pos_x(0-7)
	add a,a		; a = pos_x(0-7)*2
	add a,l		; a = (low) CLEAR_TABLE/&100 + pos_y(0_31)*16 + pos_x(0-7)*2
	ld l,a

	ld sp,hl
	pop hl
	ld (24*6+BOBS_TABLE_CLEAR80),hl	; push clear routine

	ld a,e		; a = (high)(&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x
	and 7*8		; a = pos_y(0_7)*8

	exx
	add a,(hl) 	; a = bobs number*2 + pos_y(0_7)*8
	dec l
	exx

	ld h,c		; DRAW_TABLE/&100 en &xx00
	ld l,a		; e = bobs number*2 + pos_y(0-7)*8
	ld sp,hl
	pop hl
	ld (24*4+BOBS_TABLE_DRAW80),hl	; push draw routine

	exx

; BOB26
	ld a,b		; BOB_Y_ESPACEMENT
	add a,e
	ld e,a
	ld a,(de)	; a = pos_y
	exx

	ld h,b		; POS_Y_PRECALC8/&200 en &xx00 avec xx pair !!!
	ld l,a
	add hl,hl	; hl = pos_y*4
	ld sp,hl	; sp = PTR to pos_y*8 table values
	pop hl		; hl = pos_y(0-7)*8 + pos_y(8-255)*16

	exx
	ld a,c		; BOB_X_ESPACEMENT
	add a,l
	ld l,a
	ld a,(hl)	; a = pos_x
	inc l
	exx

	ld e,a		; e = pos_x
	add hl,de	; hl = (&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x
	ld e,h		; e = (high)(&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x

	ld (25*6+BOBS_TABLE_CLEAR80+02),hl	; save actual screen address
	ld (25*4+BOBS_TABLE_DRAW80+02),hl

	pop hl		; hl = CLEAR_TABLE/&100 + pos_y(0_31)*16
	and 7		; a = pos_x(0-7)
	add a,a		; a = pos_x(0-7)*2
	add a,l		; a = (low) CLEAR_TABLE/&100 + pos_y(0_31)*16 + pos_x(0-7)*2
	ld l,a

	ld sp,hl
	pop hl
	ld (25*6+BOBS_TABLE_CLEAR80),hl	; push clear routine

	ld a,e		; a = (high)(&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x
	and 7*8		; a = pos_y(0_7)*8

	exx
	add a,(hl) 	; a = bobs number*2 + pos_y(0_7)*8
	dec l
	exx

	ld h,c		; DRAW_TABLE/&100 en &xx00
	ld l,a		; e = bobs number*2 + pos_y(0-7)*8
	ld sp,hl
	pop hl
	ld (25*4+BOBS_TABLE_DRAW80),hl	; push draw routine

	ld bc,&c880
	ld sp,ix
	ret		; go to draw job !!!

BOBS_DRAWC0

; BOB1
	ld a,b		; BOB_Y_ESPACEMENT
	add a,e
	ld e,a
	ld a,(de)	; a = pos_y
	exx

	ld h,b		; POS_Y_PRECALC8/&200 en &xx00 avec xx pair !!!
	ld l,a
	add hl,hl	; hl = pos_y*4
	ld sp,hl	; sp = PTR to pos_y*8 table values
	pop hl		; hl = pos_y(0-7)*8 + pos_y(8-255)*16

	exx
	ld a,c		; BOB_X_ESPACEMENT
	add a,l
	ld l,a
	ld a,(hl)	; a = pos_x
	inc l
	exx

	ld e,a		; e = pos_x
	add hl,de	; hl = (&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x
	ld e,h		; e = (high)(&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x

	ld (0*6+BOBS_TABLE_CLEARC0+02),hl	; save actual screen address
	ld (0*4+BOBS_TABLE_DRAWC0+02),hl

	pop hl		; hl = CLEAR_TABLE/&100 + pos_y(0_31)*16
	and 7		; a = pos_x(0-7)
	add a,a		; a = pos_x(0-7)*2
	add a,l		; a = (low) CLEAR_TABLE/&100 + pos_y(0_31)*16 + pos_x(0-7)*2
	ld l,a

	ld sp,hl
	pop hl
	ld (0*6+BOBS_TABLE_CLEARC0),hl	; push clear routine

	ld a,e		; a = (high)(&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x
	and 7*8		; a = pos_y(0_7)*8

	exx
	add a,(hl) 	; a = bobs number*2 + pos_y(0_7)*8
	dec l
	exx

	ld h,c		; DRAW_TABLE/&100 en &xx00
	ld l,a		; e = bobs number*2 + pos_y(0-7)*8
	ld sp,hl
	pop hl
	ld (0*4+BOBS_TABLE_DRAWC0),hl	; push draw routine

	exx

; BOB2
	ld a,b		; BOB_Y_ESPACEMENT
	add a,e
	ld e,a
	ld a,(de)	; a = pos_y
	exx

	ld h,b		; POS_Y_PRECALC8/&200 en &xx00 avec xx pair !!!
	ld l,a
	add hl,hl	; hl = pos_y*4
	ld sp,hl	; sp = PTR to pos_y*8 table values
	pop hl		; hl = pos_y(0-7)*8 + pos_y(8-255)*16

	exx
	ld a,c		; BOB_X_ESPACEMENT
	add a,l
	ld l,a
	ld a,(hl)	; a = pos_x
	inc l
	exx

	ld e,a		; e = pos_x
	add hl,de	; hl = (&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x
	ld e,h		; e = (high)(&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x

	ld (1*6+BOBS_TABLE_CLEARC0+02),hl	; save actual screen address
	ld (1*4+BOBS_TABLE_DRAWC0+02),hl

	pop hl		; hl = CLEAR_TABLE/&100 + pos_y(0_31)*16
	and 7		; a = pos_x(0-7)
	add a,a		; a = pos_x(0-7)*2
	add a,l		; a = (low) CLEAR_TABLE/&100 + pos_y(0_31)*16 + pos_x(0-7)*2
	ld l,a

	ld sp,hl
	pop hl
	ld (1*6+BOBS_TABLE_CLEARC0),hl	; push clear routine

	ld a,e		; a = (high)(&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x
	and 7*8		; a = pos_y(0_7)*8

	exx
	add a,(hl) 	; a = bobs number*2 + pos_y(0_7)*8
	dec l
	exx

	ld h,c		; DRAW_TABLE/&100 en &xx00
	ld l,a		; e = bobs number*2 + pos_y(0-7)*8
	ld sp,hl
	pop hl
	ld (1*4+BOBS_TABLE_DRAWC0),hl	; push draw routine

	exx

; BOB3
	ld a,b		; BOB_Y_ESPACEMENT
	add a,e
	ld e,a
	ld a,(de)	; a = pos_y
	exx

	ld h,b		; POS_Y_PRECALC8/&200 en &xx00 avec xx pair !!!
	ld l,a
	add hl,hl	; hl = pos_y*4
	ld sp,hl	; sp = PTR to pos_y*8 table values
	pop hl		; hl = pos_y(0-7)*8 + pos_y(8-255)*16

	exx
	ld a,c		; BOB_X_ESPACEMENT
	add a,l
	ld l,a
	ld a,(hl)	; a = pos_x
	inc l
	exx

	ld e,a		; e = pos_x
	add hl,de	; hl = (&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x
	ld e,h		; e = (high)(&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x

	ld (2*6+BOBS_TABLE_CLEARC0+02),hl	; save actual screen address
	ld (2*4+BOBS_TABLE_DRAWC0+02),hl

	pop hl		; hl = CLEAR_TABLE/&100 + pos_y(0_31)*16
	and 7		; a = pos_x(0-7)
	add a,a		; a = pos_x(0-7)*2
	add a,l		; a = (low) CLEAR_TABLE/&100 + pos_y(0_31)*16 + pos_x(0-7)*2
	ld l,a

	ld sp,hl
	pop hl
	ld (2*6+BOBS_TABLE_CLEARC0),hl	; push clear routine

	ld a,e		; a = (high)(&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x
	and 7*8		; a = pos_y(0_7)*8

	exx
	add a,(hl) 	; a = bobs number*2 + pos_y(0_7)*8
	dec l
	exx

	ld h,c		; DRAW_TABLE/&100 en &xx00
	ld l,a		; e = bobs number*2 + pos_y(0-7)*8
	ld sp,hl
	pop hl
	ld (2*4+BOBS_TABLE_DRAWC0),hl	; push draw routine

	exx

; BOB4
	ld a,b		; BOB_Y_ESPACEMENT
	add a,e
	ld e,a
	ld a,(de)	; a = pos_y
	exx

	ld h,b		; POS_Y_PRECALC8/&200 en &xx00 avec xx pair !!!
	ld l,a
	add hl,hl	; hl = pos_y*4
	ld sp,hl	; sp = PTR to pos_y*8 table values
	pop hl		; hl = pos_y(0-7)*8 + pos_y(8-255)*16

	exx
	ld a,c		; BOB_X_ESPACEMENT
	add a,l
	ld l,a
	ld a,(hl)	; a = pos_x
	inc l
	exx

	ld e,a		; e = pos_x
	add hl,de	; hl = (&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x
	ld e,h		; e = (high)(&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x

	ld (3*6+BOBS_TABLE_CLEARC0+02),hl	; save actual screen address
	ld (3*4+BOBS_TABLE_DRAWC0+02),hl

	pop hl		; hl = CLEAR_TABLE/&100 + pos_y(0_31)*16
	and 7		; a = pos_x(0-7)
	add a,a		; a = pos_x(0-7)*2
	add a,l		; a = (low) CLEAR_TABLE/&100 + pos_y(0_31)*16 + pos_x(0-7)*2
	ld l,a

	ld sp,hl
	pop hl
	ld (3*6+BOBS_TABLE_CLEARC0),hl	; push clear routine

	ld a,e		; a = (high)(&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x
	and 7*8		; a = pos_y(0_7)*8

	exx
	add a,(hl) 	; a = bobs number*2 + pos_y(0_7)*8
	dec l
	exx

	ld h,c		; DRAW_TABLE/&100 en &xx00
	ld l,a		; e = bobs number*2 + pos_y(0-7)*8
	ld sp,hl
	pop hl
	ld (3*4+BOBS_TABLE_DRAWC0),hl	; push draw routine

	exx

; BOB5
	ld a,b		; BOB_Y_ESPACEMENT
	add a,e
	ld e,a
	ld a,(de)	; a = pos_y
	exx

	ld h,b		; POS_Y_PRECALC8/&200 en &xx00 avec xx pair !!!
	ld l,a
	add hl,hl	; hl = pos_y*4
	ld sp,hl	; sp = PTR to pos_y*8 table values
	pop hl		; hl = pos_y(0-7)*8 + pos_y(8-255)*16

	exx
	ld a,c		; BOB_X_ESPACEMENT
	add a,l
	ld l,a
	ld a,(hl)	; a = pos_x
	inc l
	exx

	ld e,a		; e = pos_x
	add hl,de	; hl = (&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x
	ld e,h		; e = (high)(&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x

	ld (4*6+BOBS_TABLE_CLEARC0+02),hl	; save actual screen address
	ld (4*4+BOBS_TABLE_DRAWC0+02),hl

	pop hl		; hl = CLEAR_TABLE/&100 + pos_y(0_31)*16
	and 7		; a = pos_x(0-7)
	add a,a		; a = pos_x(0-7)*2
	add a,l		; a = (low) CLEAR_TABLE/&100 + pos_y(0_31)*16 + pos_x(0-7)*2
	ld l,a

	ld sp,hl
	pop hl
	ld (4*6+BOBS_TABLE_CLEARC0),hl	; push clear routine

	ld a,e		; a = (high)(&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x
	and 7*8		; a = pos_y(0_7)*8

	exx
	add a,(hl) 	; a = bobs number*2 + pos_y(0_7)*8
	dec l
	exx

	ld h,c		; DRAW_TABLE/&100 en &xx00
	ld l,a		; e = bobs number*2 + pos_y(0-7)*8
	ld sp,hl
	pop hl
	ld (4*4+BOBS_TABLE_DRAWC0),hl	; push draw routine

	exx

; BOB6
	ld a,b		; BOB_Y_ESPACEMENT
	add a,e
	ld e,a
	ld a,(de)	; a = pos_y
	exx

	ld h,b		; POS_Y_PRECALC8/&200 en &xx00 avec xx pair !!!
	ld l,a
	add hl,hl	; hl = pos_y*4
	ld sp,hl	; sp = PTR to pos_y*8 table values
	pop hl		; hl = pos_y(0-7)*8 + pos_y(8-255)*16

	exx
	ld a,c		; BOB_X_ESPACEMENT
	add a,l
	ld l,a
	ld a,(hl)	; a = pos_x
	inc l
	exx

	ld e,a		; e = pos_x
	add hl,de	; hl = (&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x
	ld e,h		; e = (high)(&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x

	ld (5*6+BOBS_TABLE_CLEARC0+02),hl	; save actual screen address
	ld (5*4+BOBS_TABLE_DRAWC0+02),hl

	pop hl		; hl = CLEAR_TABLE/&100 + pos_y(0_31)*16
	and 7		; a = pos_x(0-7)
	add a,a		; a = pos_x(0-7)*2
	add a,l		; a = (low) CLEAR_TABLE/&100 + pos_y(0_31)*16 + pos_x(0-7)*2
	ld l,a

	ld sp,hl
	pop hl
	ld (5*6+BOBS_TABLE_CLEARC0),hl	; push clear routine

	ld a,e		; a = (high)(&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x
	and 7*8		; a = pos_y(0_7)*8

	exx
	add a,(hl) 	; a = bobs number*2 + pos_y(0_7)*8
	dec l
	exx

	ld h,c		; DRAW_TABLE/&100 en &xx00
	ld l,a		; e = bobs number*2 + pos_y(0-7)*8
	ld sp,hl
	pop hl
	ld (5*4+BOBS_TABLE_DRAWC0),hl	; push draw routine

	exx

; BOB7
	ld a,b		; BOB_Y_ESPACEMENT
	add a,e
	ld e,a
	ld a,(de)	; a = pos_y
	exx

	ld h,b		; POS_Y_PRECALC8/&200 en &xx00 avec xx pair !!!
	ld l,a
	add hl,hl	; hl = pos_y*4
	ld sp,hl	; sp = PTR to pos_y*8 table values
	pop hl		; hl = pos_y(0-7)*8 + pos_y(8-255)*16

	exx
	ld a,c		; BOB_X_ESPACEMENT
	add a,l
	ld l,a
	ld a,(hl)	; a = pos_x
	inc l
	exx

	ld e,a		; e = pos_x
	add hl,de	; hl = (&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x
	ld e,h		; e = (high)(&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x

	ld (6*6+BOBS_TABLE_CLEARC0+02),hl	; save actual screen address
	ld (6*4+BOBS_TABLE_DRAWC0+02),hl

	pop hl		; hl = CLEAR_TABLE/&100 + pos_y(0_31)*16
	and 7		; a = pos_x(0-7)
	add a,a		; a = pos_x(0-7)*2
	add a,l		; a = (low) CLEAR_TABLE/&100 + pos_y(0_31)*16 + pos_x(0-7)*2
	ld l,a

	ld sp,hl
	pop hl
	ld (6*6+BOBS_TABLE_CLEARC0),hl	; push clear routine

	ld a,e		; a = (high)(&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x
	and 7*8		; a = pos_y(0_7)*8

	exx
	add a,(hl) 	; a = bobs number*2 + pos_y(0_7)*8
	dec l
	exx

	ld h,c		; DRAW_TABLE/&100 en &xx00
	ld l,a		; e = bobs number*2 + pos_y(0-7)*8
	ld sp,hl
	pop hl
	ld (6*4+BOBS_TABLE_DRAWC0),hl	; push draw routine

	exx

; BOB8
	ld a,b		; BOB_Y_ESPACEMENT
	add a,e
	ld e,a
	ld a,(de)	; a = pos_y
	exx

	ld h,b		; POS_Y_PRECALC8/&200 en &xx00 avec xx pair !!!
	ld l,a
	add hl,hl	; hl = pos_y*4
	ld sp,hl	; sp = PTR to pos_y*8 table values
	pop hl		; hl = pos_y(0-7)*8 + pos_y(8-255)*16

	exx
	ld a,c		; BOB_X_ESPACEMENT
	add a,l
	ld l,a
	ld a,(hl)	; a = pos_x
	inc l
	exx

	ld e,a		; e = pos_x
	add hl,de	; hl = (&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x
	ld e,h		; e = (high)(&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x

	ld (7*6+BOBS_TABLE_CLEARC0+02),hl	; save actual screen address
	ld (7*4+BOBS_TABLE_DRAWC0+02),hl

	pop hl		; hl = CLEAR_TABLE/&100 + pos_y(0_31)*16
	and 7		; a = pos_x(0-7)
	add a,a		; a = pos_x(0-7)*2
	add a,l		; a = (low) CLEAR_TABLE/&100 + pos_y(0_31)*16 + pos_x(0-7)*2
	ld l,a

	ld sp,hl
	pop hl
	ld (7*6+BOBS_TABLE_CLEARC0),hl	; push clear routine

	ld a,e		; a = (high)(&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x
	and 7*8		; a = pos_y(0_7)*8

	exx
	add a,(hl) 	; a = bobs number*2 + pos_y(0_7)*8
	dec l
	exx

	ld h,c		; DRAW_TABLE/&100 en &xx00
	ld l,a		; e = bobs number*2 + pos_y(0-7)*8
	ld sp,hl
	pop hl
	ld (7*4+BOBS_TABLE_DRAWC0),hl	; push draw routine

	exx

; BOB9
	ld a,b		; BOB_Y_ESPACEMENT
	add a,e
	ld e,a
	ld a,(de)	; a = pos_y
	exx

	ld h,b		; POS_Y_PRECALC8/&200 en &xx00 avec xx pair !!!
	ld l,a
	add hl,hl	; hl = pos_y*4
	ld sp,hl	; sp = PTR to pos_y*8 table values
	pop hl		; hl = pos_y(0-7)*8 + pos_y(8-255)*16

	exx
	ld a,c		; BOB_X_ESPACEMENT
	add a,l
	ld l,a
	ld a,(hl)	; a = pos_x
	inc l
	exx

	ld e,a		; e = pos_x
	add hl,de	; hl = (&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x
	ld e,h		; e = (high)(&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x

	ld (8*6+BOBS_TABLE_CLEARC0+02),hl	; save actual screen address
	ld (8*4+BOBS_TABLE_DRAWC0+02),hl

	pop hl		; hl = CLEAR_TABLE/&100 + pos_y(0_31)*16
	and 7		; a = pos_x(0-7)
	add a,a		; a = pos_x(0-7)*2
	add a,l		; a = (low) CLEAR_TABLE/&100 + pos_y(0_31)*16 + pos_x(0-7)*2
	ld l,a

	ld sp,hl
	pop hl
	ld (8*6+BOBS_TABLE_CLEARC0),hl	; push clear routine

	ld a,e		; a = (high)(&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x
	and 7*8		; a = pos_y(0_7)*8

	exx
	add a,(hl) 	; a = bobs number*2 + pos_y(0_7)*8
	dec l
	exx

	ld h,c		; DRAW_TABLE/&100 en &xx00
	ld l,a		; e = bobs number*2 + pos_y(0-7)*8
	ld sp,hl
	pop hl
	ld (8*4+BOBS_TABLE_DRAWC0),hl	; push draw routine

	exx

; BOB10
	ld a,b		; BOB_Y_ESPACEMENT
	add a,e
	ld e,a
	ld a,(de)	; a = pos_y
	exx

	ld h,b		; POS_Y_PRECALC8/&200 en &xx00 avec xx pair !!!
	ld l,a
	add hl,hl	; hl = pos_y*4
	ld sp,hl	; sp = PTR to pos_y*8 table values
	pop hl		; hl = pos_y(0-7)*8 + pos_y(8-255)*16

	exx
	ld a,c		; BOB_X_ESPACEMENT
	add a,l
	ld l,a
	ld a,(hl)	; a = pos_x
	inc l
	exx

	ld e,a		; e = pos_x
	add hl,de	; hl = (&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x
	ld e,h		; e = (high)(&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x

	ld (9*6+BOBS_TABLE_CLEARC0+02),hl	; save actual screen address
	ld (9*4+BOBS_TABLE_DRAWC0+02),hl

	pop hl		; hl = CLEAR_TABLE/&100 + pos_y(0_31)*16
	and 7		; a = pos_x(0-7)
	add a,a		; a = pos_x(0-7)*2
	add a,l		; a = (low) CLEAR_TABLE/&100 + pos_y(0_31)*16 + pos_x(0-7)*2
	ld l,a

	ld sp,hl
	pop hl
	ld (9*6+BOBS_TABLE_CLEARC0),hl	; push clear routine

	ld a,e		; a = (high)(&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x
	and 7*8		; a = pos_y(0_7)*8

	exx
	add a,(hl) 	; a = bobs number*2 + pos_y(0_7)*8
	dec l
	exx

	ld h,c		; DRAW_TABLE/&100 en &xx00
	ld l,a		; e = bobs number*2 + pos_y(0-7)*8
	ld sp,hl
	pop hl
	ld (9*4+BOBS_TABLE_DRAWC0),hl	; push draw routine

	exx

; BOB11
	ld a,b		; BOB_Y_ESPACEMENT
	add a,e
	ld e,a
	ld a,(de)	; a = pos_y
	exx

	ld h,b		; POS_Y_PRECALC8/&200 en &xx00 avec xx pair !!!
	ld l,a
	add hl,hl	; hl = pos_y*4
	ld sp,hl	; sp = PTR to pos_y*8 table values
	pop hl		; hl = pos_y(0-7)*8 + pos_y(8-255)*16

	exx
	ld a,c		; BOB_X_ESPACEMENT
	add a,l
	ld l,a
	ld a,(hl)	; a = pos_x
	inc l
	exx

	ld e,a		; e = pos_x
	add hl,de	; hl = (&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x
	ld e,h		; e = (high)(&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x

	ld (10*6+BOBS_TABLE_CLEARC0+02),hl	; save actual screen address
	ld (10*4+BOBS_TABLE_DRAWC0+02),hl

	pop hl		; hl = CLEAR_TABLE/&100 + pos_y(0_31)*16
	and 7		; a = pos_x(0-7)
	add a,a		; a = pos_x(0-7)*2
	add a,l		; a = (low) CLEAR_TABLE/&100 + pos_y(0_31)*16 + pos_x(0-7)*2
	ld l,a

	ld sp,hl
	pop hl
	ld (10*6+BOBS_TABLE_CLEARC0),hl	; push clear routine

	ld a,e		; a = (high)(&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x
	and 7*8		; a = pos_y(0_7)*8

	exx
	add a,(hl) 	; a = bobs number*2 + pos_y(0_7)*8
	dec l
	exx

	ld h,c		; DRAW_TABLE/&100 en &xx00
	ld l,a		; e = bobs number*2 + pos_y(0-7)*8
	ld sp,hl
	pop hl
	ld (10*4+BOBS_TABLE_DRAWC0),hl	; push draw routine

	exx

; BOB12
	ld a,b		; BOB_Y_ESPACEMENT
	add a,e
	ld e,a
	ld a,(de)	; a = pos_y
	exx

	ld h,b		; POS_Y_PRECALC8/&200 en &xx00 avec xx pair !!!
	ld l,a
	add hl,hl	; hl = pos_y*4
	ld sp,hl	; sp = PTR to pos_y*8 table values
	pop hl		; hl = pos_y(0-7)*8 + pos_y(8-255)*16

	exx
	ld a,c		; BOB_X_ESPACEMENT
	add a,l
	ld l,a
	ld a,(hl)	; a = pos_x
	inc l
	exx

	ld e,a		; e = pos_x
	add hl,de	; hl = (&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x
	ld e,h		; e = (high)(&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x

	ld (11*6+BOBS_TABLE_CLEARC0+02),hl	; save actual screen address
	ld (11*4+BOBS_TABLE_DRAWC0+02),hl

	pop hl		; hl = CLEAR_TABLE/&100 + pos_y(0_31)*16
	and 7		; a = pos_x(0-7)
	add a,a		; a = pos_x(0-7)*2
	add a,l		; a = (low) CLEAR_TABLE/&100 + pos_y(0_31)*16 + pos_x(0-7)*2
	ld l,a

	ld sp,hl
	pop hl
	ld (11*6+BOBS_TABLE_CLEARC0),hl	; push clear routine

	ld a,e		; a = (high)(&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x
	and 7*8		; a = pos_y(0_7)*8

	exx
	add a,(hl) 	; a = bobs number*2 + pos_y(0_7)*8
	dec l
	exx

	ld h,c		; DRAW_TABLE/&100 en &xx00
	ld l,a		; e = bobs number*2 + pos_y(0-7)*8
	ld sp,hl
	pop hl
	ld (11*4+BOBS_TABLE_DRAWC0),hl	; push draw routine

	exx

; BOB13
	ld a,b		; BOB_Y_ESPACEMENT
	add a,e
	ld e,a
	ld a,(de)	; a = pos_y
	exx

	ld h,b		; POS_Y_PRECALC8/&200 en &xx00 avec xx pair !!!
	ld l,a
	add hl,hl	; hl = pos_y*4
	ld sp,hl	; sp = PTR to pos_y*8 table values
	pop hl		; hl = pos_y(0-7)*8 + pos_y(8-255)*16

	exx
	ld a,c		; BOB_X_ESPACEMENT
	add a,l
	ld l,a
	ld a,(hl)	; a = pos_x
	inc l
	exx

	ld e,a		; e = pos_x
	add hl,de	; hl = (&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x
	ld e,h		; e = (high)(&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x

	ld (12*6+BOBS_TABLE_CLEARC0+02),hl	; save actual screen address
	ld (12*4+BOBS_TABLE_DRAWC0+02),hl

	pop hl		; hl = CLEAR_TABLE/&100 + pos_y(0_31)*16
	and 7		; a = pos_x(0-7)
	add a,a		; a = pos_x(0-7)*2
	add a,l		; a = (low) CLEAR_TABLE/&100 + pos_y(0_31)*16 + pos_x(0-7)*2
	ld l,a

	ld sp,hl
	pop hl
	ld (12*6+BOBS_TABLE_CLEARC0),hl	; push clear routine

	ld a,e		; a = (high)(&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x
	and 7*8		; a = pos_y(0_7)*8

	exx
	add a,(hl) 	; a = bobs number*2 + pos_y(0_7)*8
	dec l
	exx

	ld h,c		; DRAW_TABLE/&100 en &xx00
	ld l,a		; e = bobs number*2 + pos_y(0-7)*8
	ld sp,hl
	pop hl
	ld (12*4+BOBS_TABLE_DRAWC0),hl	; push draw routine

	exx

; BOB14
	ld a,b		; BOB_Y_ESPACEMENT
	add a,e
	ld e,a
	ld a,(de)	; a = pos_y
	exx

	ld h,b		; POS_Y_PRECALC8/&200 en &xx00 avec xx pair !!!
	ld l,a
	add hl,hl	; hl = pos_y*4
	ld sp,hl	; sp = PTR to pos_y*8 table values
	pop hl		; hl = pos_y(0-7)*8 + pos_y(8-255)*16

	exx
	ld a,c		; BOB_X_ESPACEMENT
	add a,l
	ld l,a
	ld a,(hl)	; a = pos_x
	inc l
	exx

	ld e,a		; e = pos_x
	add hl,de	; hl = (&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x
	ld e,h		; e = (high)(&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x

	ld (13*6+BOBS_TABLE_CLEARC0+02),hl	; save actual screen address
	ld (13*4+BOBS_TABLE_DRAWC0+02),hl

	pop hl		; hl = CLEAR_TABLE/&100 + pos_y(0_31)*16
	and 7		; a = pos_x(0-7)
	add a,a		; a = pos_x(0-7)*2
	add a,l		; a = (low) CLEAR_TABLE/&100 + pos_y(0_31)*16 + pos_x(0-7)*2
	ld l,a

	ld sp,hl
	pop hl
	ld (13*6+BOBS_TABLE_CLEARC0),hl	; push clear routine

	ld a,e		; a = (high)(&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x
	and 7*8		; a = pos_y(0_7)*8

	exx
	add a,(hl) 	; a = bobs number*2 + pos_y(0_7)*8
	dec l
	exx

	ld h,c		; DRAW_TABLE/&100 en &xx00
	ld l,a		; e = bobs number*2 + pos_y(0-7)*8
	ld sp,hl
	pop hl
	ld (13*4+BOBS_TABLE_DRAWC0),hl	; push draw routine

	exx

; BOB15
	ld a,b		; BOB_Y_ESPACEMENT
	add a,e
	ld e,a
	ld a,(de)	; a = pos_y
	exx

	ld h,b		; POS_Y_PRECALC8/&200 en &xx00 avec xx pair !!!
	ld l,a
	add hl,hl	; hl = pos_y*4
	ld sp,hl	; sp = PTR to pos_y*8 table values
	pop hl		; hl = pos_y(0-7)*8 + pos_y(8-255)*16

	exx
	ld a,c		; BOB_X_ESPACEMENT
	add a,l
	ld l,a
	ld a,(hl)	; a = pos_x
	inc l
	exx

	ld e,a		; e = pos_x
	add hl,de	; hl = (&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x
	ld e,h		; e = (high)(&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x

	ld (14*6+BOBS_TABLE_CLEARC0+02),hl	; save actual screen address
	ld (14*4+BOBS_TABLE_DRAWC0+02),hl

	pop hl		; hl = CLEAR_TABLE/&100 + pos_y(0_31)*16
	and 7		; a = pos_x(0-7)
	add a,a		; a = pos_x(0-7)*2
	add a,l		; a = (low) CLEAR_TABLE/&100 + pos_y(0_31)*16 + pos_x(0-7)*2
	ld l,a

	ld sp,hl
	pop hl
	ld (14*6+BOBS_TABLE_CLEARC0),hl	; push clear routine

	ld a,e		; a = (high)(&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x
	and 7*8		; a = pos_y(0_7)*8

	exx
	add a,(hl) 	; a = bobs number*2 + pos_y(0_7)*8
	dec l
	exx

	ld h,c		; DRAW_TABLE/&100 en &xx00
	ld l,a		; e = bobs number*2 + pos_y(0-7)*8
	ld sp,hl
	pop hl
	ld (14*4+BOBS_TABLE_DRAWC0),hl	; push draw routine

	exx

; BOB16
	ld a,b		; BOB_Y_ESPACEMENT
	add a,e
	ld e,a
	ld a,(de)	; a = pos_y
	exx

	ld h,b		; POS_Y_PRECALC8/&200 en &xx00 avec xx pair !!!
	ld l,a
	add hl,hl	; hl = pos_y*4
	ld sp,hl	; sp = PTR to pos_y*8 table values
	pop hl		; hl = pos_y(0-7)*8 + pos_y(8-255)*16

	exx
	ld a,c		; BOB_X_ESPACEMENT
	add a,l
	ld l,a
	ld a,(hl)	; a = pos_x
	inc l
	exx

	ld e,a		; e = pos_x
	add hl,de	; hl = (&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x
	ld e,h		; e = (high)(&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x

	ld (15*6+BOBS_TABLE_CLEARC0+02),hl	; save actual screen address
	ld (15*4+BOBS_TABLE_DRAWC0+02),hl

	pop hl		; hl = CLEAR_TABLE/&100 + pos_y(0_31)*16
	and 7		; a = pos_x(0-7)
	add a,a		; a = pos_x(0-7)*2
	add a,l		; a = (low) CLEAR_TABLE/&100 + pos_y(0_31)*16 + pos_x(0-7)*2
	ld l,a

	ld sp,hl
	pop hl
	ld (15*6+BOBS_TABLE_CLEARC0),hl	; push clear routine

	ld a,e		; a = (high)(&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x
	and 7*8		; a = pos_y(0_7)*8

	exx
	add a,(hl) 	; a = bobs number*2 + pos_y(0_7)*8
	dec l
	exx

	ld h,c		; DRAW_TABLE/&100 en &xx00
	ld l,a		; e = bobs number*2 + pos_y(0-7)*8
	ld sp,hl
	pop hl
	ld (15*4+BOBS_TABLE_DRAWC0),hl	; push draw routine

	exx

; BOB17
	ld a,b		; BOB_Y_ESPACEMENT
	add a,e
	ld e,a
	ld a,(de)	; a = pos_y
	exx

	ld h,b		; POS_Y_PRECALC8/&200 en &xx00 avec xx pair !!!
	ld l,a
	add hl,hl	; hl = pos_y*4
	ld sp,hl	; sp = PTR to pos_y*8 table values
	pop hl		; hl = pos_y(0-7)*8 + pos_y(8-255)*16

	exx
	ld a,c		; BOB_X_ESPACEMENT
	add a,l
	ld l,a
	ld a,(hl)	; a = pos_x
	inc l
	exx

	ld e,a		; e = pos_x
	add hl,de	; hl = (&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x
	ld e,h		; e = (high)(&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x

	ld (16*6+BOBS_TABLE_CLEARC0+02),hl	; save actual screen address
	ld (16*4+BOBS_TABLE_DRAWC0+02),hl

	pop hl		; hl = CLEAR_TABLE/&100 + pos_y(0_31)*16
	and 7		; a = pos_x(0-7)
	add a,a		; a = pos_x(0-7)*2
	add a,l		; a = (low) CLEAR_TABLE/&100 + pos_y(0_31)*16 + pos_x(0-7)*2
	ld l,a

	ld sp,hl
	pop hl
	ld (16*6+BOBS_TABLE_CLEARC0),hl	; push clear routine

	ld a,e		; a = (high)(&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x
	and 7*8		; a = pos_y(0_7)*8

	exx
	add a,(hl) 	; a = bobs number*2 + pos_y(0_7)*8
	dec l
	exx

	ld h,c		; DRAW_TABLE/&100 en &xx00
	ld l,a		; e = bobs number*2 + pos_y(0-7)*8
	ld sp,hl
	pop hl
	ld (16*4+BOBS_TABLE_DRAWC0),hl	; push draw routine

	exx

; BOB18
	ld a,b		; BOB_Y_ESPACEMENT
	add a,e
	ld e,a
	ld a,(de)	; a = pos_y
	exx

	ld h,b		; POS_Y_PRECALC8/&200 en &xx00 avec xx pair !!!
	ld l,a
	add hl,hl	; hl = pos_y*4
	ld sp,hl	; sp = PTR to pos_y*8 table values
	pop hl		; hl = pos_y(0-7)*8 + pos_y(8-255)*16

	exx
	ld a,c		; BOB_X_ESPACEMENT
	add a,l
	ld l,a
	ld a,(hl)	; a = pos_x
	inc l
	exx

	ld e,a		; e = pos_x
	add hl,de	; hl = (&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x
	ld e,h		; e = (high)(&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x

	ld (17*6+BOBS_TABLE_CLEARC0+02),hl	; save actual screen address
	ld (17*4+BOBS_TABLE_DRAWC0+02),hl

	pop hl		; hl = CLEAR_TABLE/&100 + pos_y(0_31)*16
	and 7		; a = pos_x(0-7)
	add a,a		; a = pos_x(0-7)*2
	add a,l		; a = (low) CLEAR_TABLE/&100 + pos_y(0_31)*16 + pos_x(0-7)*2
	ld l,a

	ld sp,hl
	pop hl
	ld (17*6+BOBS_TABLE_CLEARC0),hl	; push clear routine

	ld a,e		; a = (high)(&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x
	and 7*8		; a = pos_y(0_7)*8

	exx
	add a,(hl) 	; a = bobs number*2 + pos_y(0_7)*8
	dec l
	exx

	ld h,c		; DRAW_TABLE/&100 en &xx00
	ld l,a		; e = bobs number*2 + pos_y(0-7)*8
	ld sp,hl
	pop hl
	ld (17*4+BOBS_TABLE_DRAWC0),hl	; push draw routine

	exx

; BOB19
	ld a,b		; BOB_Y_ESPACEMENT
	add a,e
	ld e,a
	ld a,(de)	; a = pos_y
	exx

	ld h,b		; POS_Y_PRECALC8/&200 en &xx00 avec xx pair !!!
	ld l,a
	add hl,hl	; hl = pos_y*4
	ld sp,hl	; sp = PTR to pos_y*8 table values
	pop hl		; hl = pos_y(0-7)*8 + pos_y(8-255)*16

	exx
	ld a,c		; BOB_X_ESPACEMENT
	add a,l
	ld l,a
	ld a,(hl)	; a = pos_x
	inc l
	exx

	ld e,a		; e = pos_x
	add hl,de	; hl = (&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x
	ld e,h		; e = (high)(&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x

	ld (18*6+BOBS_TABLE_CLEARC0+02),hl	; save actual screen address
	ld (18*4+BOBS_TABLE_DRAWC0+02),hl

	pop hl		; hl = CLEAR_TABLE/&100 + pos_y(0_31)*16
	and 7		; a = pos_x(0-7)
	add a,a		; a = pos_x(0-7)*2
	add a,l		; a = (low) CLEAR_TABLE/&100 + pos_y(0_31)*16 + pos_x(0-7)*2
	ld l,a

	ld sp,hl
	pop hl
	ld (18*6+BOBS_TABLE_CLEARC0),hl	; push clear routine

	ld a,e		; a = (high)(&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x
	and 7*8		; a = pos_y(0_7)*8

	exx
	add a,(hl) 	; a = bobs number*2 + pos_y(0_7)*8
	dec l
	exx

	ld h,c		; DRAW_TABLE/&100 en &xx00
	ld l,a		; e = bobs number*2 + pos_y(0-7)*8
	ld sp,hl
	pop hl
	ld (18*4+BOBS_TABLE_DRAWC0),hl	; push draw routine

	exx

; BOB20
	ld a,b		; BOB_Y_ESPACEMENT
	add a,e
	ld e,a
	ld a,(de)	; a = pos_y
	exx

	ld h,b		; POS_Y_PRECALC8/&200 en &xx00 avec xx pair !!!
	ld l,a
	add hl,hl	; hl = pos_y*4
	ld sp,hl	; sp = PTR to pos_y*8 table values
	pop hl		; hl = pos_y(0-7)*8 + pos_y(8-255)*16

	exx
	ld a,c		; BOB_X_ESPACEMENT
	add a,l
	ld l,a
	ld a,(hl)	; a = pos_x
	inc l
	exx

	ld e,a		; e = pos_x
	add hl,de	; hl = (&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x
	ld e,h		; e = (high)(&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x

	ld (19*6+BOBS_TABLE_CLEARC0+02),hl	; save actual screen address
	ld (19*4+BOBS_TABLE_DRAWC0+02),hl

	pop hl		; hl = CLEAR_TABLE/&100 + pos_y(0_31)*16
	and 7		; a = pos_x(0-7)
	add a,a		; a = pos_x(0-7)*2
	add a,l		; a = (low) CLEAR_TABLE/&100 + pos_y(0_31)*16 + pos_x(0-7)*2
	ld l,a

	ld sp,hl
	pop hl
	ld (19*6+BOBS_TABLE_CLEARC0),hl	; push clear routine

	ld a,e		; a = (high)(&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x
	and 7*8		; a = pos_y(0_7)*8

	exx
	add a,(hl) 	; a = bobs number*2 + pos_y(0_7)*8
	dec l
	exx

	ld h,c		; DRAW_TABLE/&100 en &xx00
	ld l,a		; e = bobs number*2 + pos_y(0-7)*8
	ld sp,hl
	pop hl
	ld (19*4+BOBS_TABLE_DRAWC0),hl	; push draw routine

	exx

; BOB21
	ld a,b		; BOB_Y_ESPACEMENT
	add a,e
	ld e,a
	ld a,(de)	; a = pos_y
	exx

	ld h,b		; POS_Y_PRECALC8/&200 en &xx00 avec xx pair !!!
	ld l,a
	add hl,hl	; hl = pos_y*4
	ld sp,hl	; sp = PTR to pos_y*8 table values
	pop hl		; hl = pos_y(0-7)*8 + pos_y(8-255)*16

	exx
	ld a,c		; BOB_X_ESPACEMENT
	add a,l
	ld l,a
	ld a,(hl)	; a = pos_x
	inc l
	exx

	ld e,a		; e = pos_x
	add hl,de	; hl = (&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x
	ld e,h		; e = (high)(&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x

	ld (20*6+BOBS_TABLE_CLEARC0+02),hl	; save actual screen address
	ld (20*4+BOBS_TABLE_DRAWC0+02),hl

	pop hl		; hl = CLEAR_TABLE/&100 + pos_y(0_31)*16
	and 7		; a = pos_x(0-7)
	add a,a		; a = pos_x(0-7)*2
	add a,l		; a = (low) CLEAR_TABLE/&100 + pos_y(0_31)*16 + pos_x(0-7)*2
	ld l,a

	ld sp,hl
	pop hl
	ld (20*6+BOBS_TABLE_CLEARC0),hl	; push clear routine

	ld a,e		; a = (high)(&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x
	and 7*8		; a = pos_y(0_7)*8

	exx
	add a,(hl) 	; a = bobs number*2 + pos_y(0_7)*8
	dec l
	exx

	ld h,c		; DRAW_TABLE/&100 en &xx00
	ld l,a		; e = bobs number*2 + pos_y(0-7)*8
	ld sp,hl
	pop hl
	ld (20*4+BOBS_TABLE_DRAWC0),hl	; push draw routine

	exx

; BOB22
	ld a,b		; BOB_Y_ESPACEMENT
	add a,e
	ld e,a
	ld a,(de)	; a = pos_y
	exx

	ld h,b		; POS_Y_PRECALC8/&200 en &xx00 avec xx pair !!!
	ld l,a
	add hl,hl	; hl = pos_y*4
	ld sp,hl	; sp = PTR to pos_y*8 table values
	pop hl		; hl = pos_y(0-7)*8 + pos_y(8-255)*16

	exx
	ld a,c		; BOB_X_ESPACEMENT
	add a,l
	ld l,a
	ld a,(hl)	; a = pos_x
	inc l
	exx

	ld e,a		; e = pos_x
	add hl,de	; hl = (&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x
	ld e,h		; e = (high)(&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x

	ld (21*6+BOBS_TABLE_CLEARC0+02),hl	; save actual screen address
	ld (21*4+BOBS_TABLE_DRAWC0+02),hl

	pop hl		; hl = CLEAR_TABLE/&100 + pos_y(0_31)*16
	and 7		; a = pos_x(0-7)
	add a,a		; a = pos_x(0-7)*2
	add a,l		; a = (low) CLEAR_TABLE/&100 + pos_y(0_31)*16 + pos_x(0-7)*2
	ld l,a

	ld sp,hl
	pop hl
	ld (21*6+BOBS_TABLE_CLEARC0),hl	; push clear routine

	ld a,e		; a = (high)(&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x
	and 7*8		; a = pos_y(0_7)*8

	exx
	add a,(hl) 	; a = bobs number*2 + pos_y(0_7)*8
	dec l
	exx

	ld h,c		; DRAW_TABLE/&100 en &xx00
	ld l,a		; e = bobs number*2 + pos_y(0-7)*8
	ld sp,hl
	pop hl
	ld (21*4+BOBS_TABLE_DRAWC0),hl	; push draw routine

	exx

; BOB23
	ld a,b		; BOB_Y_ESPACEMENT
	add a,e
	ld e,a
	ld a,(de)	; a = pos_y
	exx

	ld h,b		; POS_Y_PRECALC8/&200 en &xx00 avec xx pair !!!
	ld l,a
	add hl,hl	; hl = pos_y*4
	ld sp,hl	; sp = PTR to pos_y*8 table values
	pop hl		; hl = pos_y(0-7)*8 + pos_y(8-255)*16

	exx
	ld a,c		; BOB_X_ESPACEMENT
	add a,l
	ld l,a
	ld a,(hl)	; a = pos_x
	inc l
	exx

	ld e,a		; e = pos_x
	add hl,de	; hl = (&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x
	ld e,h		; e = (high)(&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x

	ld (22*6+BOBS_TABLE_CLEARC0+02),hl	; save actual screen address
	ld (22*4+BOBS_TABLE_DRAWC0+02),hl

	pop hl		; hl = CLEAR_TABLE/&100 + pos_y(0_31)*16
	and 7		; a = pos_x(0-7)
	add a,a		; a = pos_x(0-7)*2
	add a,l		; a = (low) CLEAR_TABLE/&100 + pos_y(0_31)*16 + pos_x(0-7)*2
	ld l,a

	ld sp,hl
	pop hl
	ld (22*6+BOBS_TABLE_CLEARC0),hl	; push clear routine

	ld a,e		; a = (high)(&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x
	and 7*8		; a = pos_y(0_7)*8

	exx
	add a,(hl) 	; a = bobs number*2 + pos_y(0_7)*8
	dec l
	exx

	ld h,c		; DRAW_TABLE/&100 en &xx00
	ld l,a		; e = bobs number*2 + pos_y(0-7)*8
	ld sp,hl
	pop hl
	ld (22*4+BOBS_TABLE_DRAWC0),hl	; push draw routine

	exx

; BOB24
	ld a,b		; BOB_Y_ESPACEMENT
	add a,e
	ld e,a
	ld a,(de)	; a = pos_y
	exx

	ld h,b		; POS_Y_PRECALC8/&200 en &xx00 avec xx pair !!!
	ld l,a
	add hl,hl	; hl = pos_y*4
	ld sp,hl	; sp = PTR to pos_y*8 table values
	pop hl		; hl = pos_y(0-7)*8 + pos_y(8-255)*16

	exx
	ld a,c		; BOB_X_ESPACEMENT
	add a,l
	ld l,a
	ld a,(hl)	; a = pos_x
	inc l
	exx

	ld e,a		; e = pos_x
	add hl,de	; hl = (&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x
	ld e,h		; e = (high)(&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x

	ld (23*6+BOBS_TABLE_CLEARC0+02),hl	; save actual screen address
	ld (23*4+BOBS_TABLE_DRAWC0+02),hl

	pop hl		; hl = CLEAR_TABLE/&100 + pos_y(0_31)*16
	and 7		; a = pos_x(0-7)
	add a,a		; a = pos_x(0-7)*2
	add a,l		; a = (low) CLEAR_TABLE/&100 + pos_y(0_31)*16 + pos_x(0-7)*2
	ld l,a

	ld sp,hl
	pop hl
	ld (23*6+BOBS_TABLE_CLEARC0),hl	; push clear routine

	ld a,e		; a = (high)(&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x
	and 7*8		; a = pos_y(0_7)*8

	exx
	add a,(hl) 	; a = bobs number*2 + pos_y(0_7)*8
	dec l
	exx

	ld h,c		; DRAW_TABLE/&100 en &xx00
	ld l,a		; e = bobs number*2 + pos_y(0-7)*8
	ld sp,hl
	pop hl
	ld (23*4+BOBS_TABLE_DRAWC0),hl	; push draw routine

	exx

; BOB25
	ld a,b		; BOB_Y_ESPACEMENT
	add a,e
	ld e,a
	ld a,(de)	; a = pos_y
	exx

	ld h,b		; POS_Y_PRECALC8/&200 en &xx00 avec xx pair !!!
	ld l,a
	add hl,hl	; hl = pos_y*4
	ld sp,hl	; sp = PTR to pos_y*8 table values
	pop hl		; hl = pos_y(0-7)*8 + pos_y(8-255)*16

	exx
	ld a,c		; BOB_X_ESPACEMENT
	add a,l
	ld l,a
	ld a,(hl)	; a = pos_x
	inc l
	exx

	ld e,a		; e = pos_x
	add hl,de	; hl = (&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x
	ld e,h		; e = (high)(&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x

	ld (24*6+BOBS_TABLE_CLEARC0+02),hl	; save actual screen address
	ld (24*4+BOBS_TABLE_DRAWC0+02),hl

	pop hl		; hl = CLEAR_TABLE/&100 + pos_y(0_31)*16
	and 7		; a = pos_x(0-7)
	add a,a		; a = pos_x(0-7)*2
	add a,l		; a = (low) CLEAR_TABLE/&100 + pos_y(0_31)*16 + pos_x(0-7)*2
	ld l,a

	ld sp,hl
	pop hl
	ld (24*6+BOBS_TABLE_CLEARC0),hl	; push clear routine

	ld a,e		; a = (high)(&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x
	and 7*8		; a = pos_y(0_7)*8

	exx
	add a,(hl) 	; a = bobs number*2 + pos_y(0_7)*8
	dec l
	exx

	ld h,c		; DRAW_TABLE/&100 en &xx00
	ld l,a		; e = bobs number*2 + pos_y(0-7)*8
	ld sp,hl
	pop hl
	ld (24*4+BOBS_TABLE_DRAWC0),hl	; push draw routine

	exx

; BOB26
	ld a,b		; BOB_Y_ESPACEMENT
	add a,e
	ld e,a
	ld a,(de)	; a = pos_y
	exx

	ld h,b		; POS_Y_PRECALC8/&200 en &xx00 avec xx pair !!!
	ld l,a
	add hl,hl	; hl = pos_y*4
	ld sp,hl	; sp = PTR to pos_y*8 table values
	pop hl		; hl = pos_y(0-7)*8 + pos_y(8-255)*16

	exx
	ld a,c		; BOB_X_ESPACEMENT
	add a,l
	ld l,a
	ld a,(hl)	; a = pos_x
	inc l
	exx

	ld e,a		; e = pos_x
	add hl,de	; hl = (&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x
	ld e,h		; e = (high)(&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x

	ld (25*6+BOBS_TABLE_CLEARC0+02),hl	; save actual screen address
	ld (25*4+BOBS_TABLE_DRAWC0+02),hl

	pop hl		; hl = CLEAR_TABLE/&100 + pos_y(0_31)*16
	and 7		; a = pos_x(0-7)
	add a,a		; a = pos_x(0-7)*2
	add a,l		; a = (low) CLEAR_TABLE/&100 + pos_y(0_31)*16 + pos_x(0-7)*2
	ld l,a

	ld sp,hl
	pop hl
	ld (25*6+BOBS_TABLE_CLEARC0),hl	; push clear routine

	ld a,e		; a = (high)(&c0 or &80) + pos_y (0-7)*8 + pos_y(8-255)*16 + pos_x
	and 7*8		; a = pos_y(0_7)*8

	exx
	add a,(hl) 	; a = bobs number*2 + pos_y(0_7)*8
	dec l
	exx

	ld h,c		; DRAW_TABLE/&100 en &xx00
	ld l,a		; e = bobs number*2 + pos_y(0-7)*8
	ld sp,hl
	pop hl
	ld (25*4+BOBS_TABLE_DRAWC0),hl	; push draw routine

	ld bc,&c880
	ld sp,ix
	ret		; go to draw job !!!

BOBS_DRAW_BACK
	ld a,&04
	ld de,&0d16

	ld bc,&bc07
	out (c),c	; &07
	inc b
	out (c),d	; &0d
	dec b
	out (c),a	; &04
	inc b
	out (c),e	; &16

	ld bc,&7f00+MAURICE_TEXT_BANK
	out (c),c

DRAW_MAURICE_SCROLL
	ld hl,MAURICE_TEXT_ADDRESS
	ld a,(hl)
	or a			; cp 0
	jr nz,MAURICE_TEXT_NOT_END
;	ld bc,BOBS_DRAW_BACK
;	ld (BOBS_TABLE80_END+2),bc
;	ld (BOBS_TABLEC0_END+2),bc
	ld hl,MAURICE_TEXT_ADDRESS+&0356
	ld a,(hl)
;	ld (DRAW_MAURICE_SCROLL+1),hl
;	jp prepare_main_loop

MAURICE_TEXT_NOT_END
	ld (MAURICE_SAVE_TEXT_CHARACTER+1),a
	xor &80
	jr nz,MAURICE_TEXT_NO_WAIT

MAURICE_TEXT_WAIT
MAURICE_TEXT_WAIT_one_second
	ld a,50
	dec a
	jr nz,MAURICE_TEXT_continue_to_wait_nextsecond

MAURICE_TEXT_WAIT_seconds
	ld a,&00
	inc a
	inc hl
	cp (hl)
	jr nz,MAURICE_TEXT_WAIT_one_second_more
	xor a
	ld (MAURICE_TEXT_WAIT_seconds+1),a
	ld a,50
	ld (MAURICE_TEXT_WAIT_one_second+1),a
	inc hl
	ld (DRAW_MAURICE_SCROLL+1),hl

	jp main_loop

MAURICE_TEXT_WAIT_one_second_more
	ld (MAURICE_TEXT_WAIT_seconds+1),a

MAURICE_TEXT_continue_to_wait_nextsecond
	ld (MAURICE_TEXT_WAIT_one_second+1),a

	jp main_loop

MAURICE_TEXT_NO_WAIT
	dec a
	jr nz,MAURICE_TEXT_NO_SPACES
	inc hl
MAURICE_TEXT_SPACES_COUNTER
	ld a,&00
	inc a
	ld (MAURICE_TEXT_SPACES_COUNTER+1),a
	cp (hl)
	jr nz,MAURICE_TEXT_END_OF_SPACES
	ld (DRAW_MAURICE_SCROLL+1),hl
	xor a
	ld (MAURICE_TEXT_SPACES_COUNTER+1),a
	jr MAURICE_TEXT_SPACES
MAURICE_TEXT_END_OF_SPACES
	dec hl
	dec hl
MAURICE_TEXT_SPACES
	ld a,&20
	ld (MAURICE_SAVE_TEXT_CHARACTER+1),a

	jr MAURICE_SCROLL_ADDRESS

MAURICE_TEXT_NO_SPACES
	dec a
	jr nz,MAURICE_SCROLL_NO_BOBS_ESPACEMENT
	inc hl
	ld a,(hl)
	ld (BOBS_X_ESPACEMENT),a
	inc hl
	ld a,(hl)
	ld (BOBS_Y_ESPACEMENT),a

	jr MAURICE_SCROLL_CONTINUE

MAURICE_SCROLL_NO_BOBS_ESPACEMENT
	dec a
	jr nz,MAURICE_SCROLL_NO_BOBS_INCREMENT
	inc hl
	ld a,(hl)
	ld (BOBS_X_INCREMENT+1),a
	inc hl
	ld a,(hl)
	ld (BOBS_Y_INCREMENT+1),a

	jr MAURICE_SCROLL_CONTINUE

MAURICE_SCROLL_NO_BOBS_INCREMENT
	dec a
	jr nz,MAURICE_SCROLL_NO_CURVE_CHANGE
;	inc hl
;	ld a,(hl)
TABLE_SELECT_ANIM_INDEX
	ld bc,TABLE_SELECT_ANIM
	ld a,(bc)
	inc a	; cp &ff
	jr nz,TABLE_SELECT_ANIM_NOT_END
	ld bc,TABLE_SELECT_ANIM
	ld a,(bc)
	inc a
TABLE_SELECT_ANIM_NOT_END
	dec a
	inc bc
	ld (TABLE_SELECT_ANIM_INDEX+1),bc
	ld bc,BOB_MOVE_X_TABLE1+00
	add a,b
	ld b,a
	ld (BOBS_MOVE_X+1),bc
	add a,7
	ld b,a
	ld (BOBS_MOVE_Y+1),bc
	jr MAURICE_SCROLL_CONTINUE

MAURICE_SCROLL_NO_CURVE_CHANGE
	dec a
	jr nz,MAURICE_SCROLL_NO_MUSIC_ACTIVATE
	ld bc,MAURICE_MUSIC_CALL
	ld (main_loop+1),bc
;	jr MAURICE_SCROLL_CONTINUE

;	dec a
;	jr nz,MAURICE_SCROLL_NO_SECOND_PART_ACTIVATE
;	ld bc,BOBS_DRAW_BACK2
;	ld (BOBS_TABLE80_END+2),bc
;	ld (BOBS_TABLEC0_END+2),bc
;	inc hl
;	ld (DRAW_MAURICE_SCROLL+1),hl
;	jp prepare_main_second_loop

MAURICE_SCROLL_CONTINUE
	inc hl
	ld (DRAW_MAURICE_SCROLL+1),hl
	ld a,(hl)
	ld (MAURICE_SAVE_TEXT_CHARACTER+1),a

MAURICE_SCROLL_NO_MUSIC_ACTIVATE
; MAURICE_SCROLL_NO_SECOND_PART_ACTIVATE
MAURICE_SCROLL_ADDRESS
	ld de,&4060
	inc de
	ld a,d
	and &47
	ld d,a
	ld (MAURICE_SCROLL_ADDRESS+1),de

MAURICE_SCROLL_SCREEN_ADDRESS
	ld bc,&1000

DRAW_MAURICE_SCROLLTEXT
	ld a,&00
	xor 1
	ld (DRAW_MAURICE_SCROLLTEXT+1),a
	jr nz,DRAW_MAURICE_HW_SCROLL

	inc hl
	ld (DRAW_MAURICE_SCROLL+1),hl
	inc bc
	ld a,b
	and &13
	ld b,a
	ld (MAURICE_SCROLL_SCREEN_ADDRESS+1),bc

	jr MAURICE_SAVE_TEXT_CHARACTER

DRAW_MAURICE_HW_SCROLL
	ld a,b
	inc a
	and &13
	ld b,a

	ld a,&02
	add a,d
	and &47
	ld d,a

MAURICE_SAVE_TEXT_CHARACTER
	ld a,&00
	ld (SECOND_SCREEN_ADDRESS+1),bc
	sub &20
	add a,a         ; pos_caracter*2
	ld h,0
	ld l,a
	add hl,hl	; pos_caracter*4
	add hl,hl       ; pos_caracter*8
	add hl,hl       ; pos_caracter*16
	ld bc,MAURICE_FONT_ADDRESS
	add hl,bc

	ld bc,&7f00+MAURICE_FONT_BANK
	out (c),c

; L0 c0 11000000
; L2 d0 11010000 set 4,h
; L3 d8 11011000 set 3,h
; L1 c8 11001000 res 4,h
; L5 e8 11101000 set 5,h
; L4 e0 11100000 res 3,h
; L6 f0 11110000 set 4,h
; L7 f8 11111000 set 3,h

	ld sp,hl
	ex de,hl

	ld a,h
	cp &47
	jr nz,MAURICE_SCROLL_ADDRESS_NO_OVERFLOW
	ld a,l
	inc a		; cp &FF
	jr z,MAURICE_SCROLL_ADDRESS_OVERFLOW

MAURICE_SCROLL_ADDRESS_NO_OVERFLOW
	pop de		; L0 c0 11000000
	pop bc
	ld (hl),e
	inc hl
	ld (hl),d
	set 4,h		; L2 d0 11010000 set 4,h
	pop de
	ld (hl),d
	dec hl
	ld (hl),e
	set 3,h		; L3 d8 11011000 set 3,h
	pop de
	ld (hl),e
	inc hl
	ld (hl),d
	res 4,h		; L1 c8 11001000 res 4,h
	ld (hl),b
	dec hl
	ld (hl),c
	set 5,h
	pop bc
	pop de		; L5 e8 11101000 set 5,h
	ld (hl),e
	inc hl
	ld (hl),d
	res 3,h		; L4 e0 11100000 res 3,h
	ld (hl),b
	dec hl
	ld (hl),c
	set 4,h
	pop de		; L6 f0 11110000 set 4,h
	ld (hl),e
	inc hl
	ld (hl),d
	set 3,h
	pop de		; L7 f8 11111000 set 3,h
	ld (hl),d
	dec hl
	ld (hl),e

	jp main_loop

MAURICE_SCROLL_ADDRESS_OVERFLOW
	pop de		; L0 c0 11000000
	pop bc
	ld (hl),e
	inc l
	ld h,&40
	ld (hl),d
	set 4,h		; L2 d0 11010000 set 4,h
	pop de
	ld (hl),d
	dec l
	ld h,&57
	ld (hl),e
	set 3,h		; L3 d8 11011000 set 3,h
	pop de
	ld (hl),e
	inc l
	ld h,&58
	ld (hl),d
	res 4,h		; L1 c8 11001000 res 4,h
	ld (hl),b
	dec l
	ld h,&4F
	ld (hl),c
	set 5,h
	pop bc
	pop de		; L5 e8 11101000 set 5,h
	ld (hl),e
	inc l
	ld h,&68
	ld (hl),d
	res 3,h		; L4 e0 11100000 res 3,h
	ld (hl),b
	dec l
	ld h,&67
	ld (hl),c
	set 4,h
	pop de		; L6 f0 11110000 set 4,h
	ld (hl),e
	inc l
	ld h,&70
	ld (hl),d
	set 3,h
	pop de		; L7 f8 11111000 set 3,h
	ld (hl),d
	dec l
	ld h,&7f
	ld (hl),e

	jp main_loop

	org &3c4e
	incbin "MAURICE.FNT"

list
; end of file
EOF_ADDRESS
EOF_LENGTH equ EOF_ADDRESS-&19fd

